2016-03-07 204 views
0

我不知道是什麼問題。當我在刪除所有歷史記錄和Cookie以及緩存後第一次登錄時,它不會將會話設置爲重定向頁面。但是當我第二次登錄時,會話被設置爲重定向頁面。這裏是第一頁&第二頁的代碼。會話第一次不工作,從第二次起作用

首頁

<?php 
session_start(); 
include('includes/connection.php'); 
$email=$_POST['email']; 
$password=$_POST['password']; 

$data=mysqli_query($GLOBALS["___mysqli_ston"], "select * from user_registration where email='$email' and password='$password' "); 
$data1=mysqli_num_rows($data); 
$val=mysqli_fetch_array($data); 

if($data1>0) 
{ 
    $_SESSION['user_id']=$val['user_id']; 
    echo "<script>window.location.href='index.php'</script>"; 

} 
else 
{ 
    echo "<script>window.location.href='login.php'</script>"; 

} 
?> 

第二頁

<?php 
    session_start(); 
    $val=$_SESSION['user_id']; 
    echo $val; 
?> 
+0

等待。 'mysqli_query()'在創建連接之前?另外,SQL容易受到SQL注入的影響。 – Raptor

+0

你的首頁也需要一個'session_start()',最好是你第一次打電話。如果不先調用session_start(),你不能/不應該訪問'$ _SESSION'。 – Kalkran

+0

是的,它在第一頁,抱歉忘了提及。在session_start();在第一頁&頁面頂部 –

回答

0

,而不是回聲使用

header("Location: index.php"); 

編輯

session_start應在第一頁的頂部聲明,因爲你不能設置,如果你是在一個控制檯環境中運行它不會在上下文存在,您會收到以下錯誤 "$_SESSION['user_id'] does not exist in the current context"

+0

仍然有這個問題。但我注意到,在不同的服務器和本地主機上它正在工作。 –

0
會話

session_start();應該在兩個腳本的最頂端!

會話變量保存在服務器上,並分配一個唯一的代碼,通過cookie傳遞給瀏覽器。

由於餅乾由標頭設置,他們需要先發送其他東西!

即使腳本頂部的空格也可能導致會話cookie在瀏覽器端無法正確設置。

所以始終啓動這兩個腳本是這樣的:

<?php 
session_start(); 

// Rest of the code.... 

看起來他們是在對你的問題上面,但是我覺得你編輯的問題後放在那裏。

這是會議第一次不能正常工作的唯一原因,他們正在第二次工作。

相關問題