2014-10-28 48 views
2

PHP無法在登錄頁面登錄頁面&上存儲$ _SESSION變量的值。起初問題是,每個頁面請求都會生成一個新的SESSION ID。但即使解決了該問題,也無法識別$ _SESSION變量的值或索引。爲PHP中同一網站的不同頁面生成多個會話ID

登錄頁面代碼

if(mysqli_num_rows($data) == 1) 
{ 
    setcookie('user_id',$row['user_id'],time()+(60*60*24)); 
    setcookie('username',$row['username'],time()+(60*60*24)); 
    echo $row['user_id']; 
    $name = $row['username']; 
    if(!empty($_COOKIE['user_id'])&&!empty($_COOKIE['username'])) 
    header('Location: '."home.php",200); 
    else 
    { 
     $_SESSION['user_id']=$row['user_id']; 
     $_SESSION['username']= $name; 
     header('Location: '."home.php",200); 
    } 
} 

着陸頁代碼

<?php 
session_start(); 
if (isset($_SESSION['PHPSESSID'])) { 
    header('Location: '."index.php",200); 
} 
else{ 
    echo "Hello".$_SESSION["username"]; 
} 
?> 

php.ini文件配置

session.use_cookies開開

session.use_only_cookies開開

session.use_strict_mode關關

+0

你在登錄頁面上有'session_start()'嗎? – anson 2014-10-28 23:35:49

+0

讓你的'session_start();'通用並且用'include'來調用它;'爲什麼在登錄頁面將'$ _SESSION ['username']'賦值給'$ name'? – Xrait 2014-10-29 00:11:54

+0

@andbeyond是會話啓動()也包含在登錄頁面中,作爲頁面中的第一件事。 – 2014-10-29 11:52:23

回答

0

確保每一頁都已經在session_start()如果你正在使用的會話。

如果您的示例腳本在設置會話user_id和name之前調用session_start()。

然後在着陸頁上,檢查 如果(isset($ _ SESSION [ 'USER_ID'])){

理想情況下,你應該再檢查,對$ _SESSION值[ 'user_ID的']爲重定向之前的正確格式。


僅供參考您應該添加死亡;在你的header()調用之後的行上。您需要使用die來停止在header()之後執行腳本,以便停止腳本。否則,你的腳本將被執行到最後,什麼會導致一些奇怪的結果。

+0

嘗試了你建議的每一件事。沒有工作:( – 2014-10-31 00:21:24