我有一個使用AJAX實現的登錄,並且在發送響應文本之前,後端的PHP設置了$ _SESSION ['guest']。然後它在前端的JavaScript重定向到訪客頁面,該頁面檢查是否isset($ _ SESSION ['guest']),但通常這會導致錯誤,並且我被帶到另一個頁面(使用我的else分支)。
我想知道如果可能我太早檢查它,那就是爲什麼isset($ _ SESSION ['guest'])結果爲false。但是我在重定向到測試它的頁面前倒計時5秒,所以這是我不明白的。
發生了幾次(我註銷並重新登錄)後,它停止失敗,我無法讓它失敗,這顯然沒有幫助!認爲這可能是一個緩存/ cookie問題,但我已經清除了所有這一切,它仍然不會再失敗。
任何想法?
//this is the login script snippet
if($rows == 1){
$_SESSION[$type] = $username; //$type is posted over as guest or client. this is valid right?
$_SESSION[$type.'_id'] = $result['id'];
echo $_SESSION['welcome'] = 'You have logged in successfully.';
}
<?php
//snippet from the guest page. session_start() is invoked within the included 'page_top.php'
include('page_top.php');
if(isset($_SESSION['guest'])){
if(isset($_GET['sect'])){
if($_GET['sect'] == 'photography'){
include('view_album.php');
}
else{
include('404.html');
}
}
else{
include('welcome.php');
}
}
else{
include('403.html'); //i get redirected here!
}
include('page_bottom.php');
?>
編輯:我現在想的是,當它失敗會話變量只是不獲取設置,因爲如果我重裝我的客人頁面,它會導致每次403.html頁面,所以它不是一個延遲,它只是沒有設置。
它可能是一個緩存問題? – Nanne 2011-05-26 20:00:32
不,我推斷,因爲我記錄它5秒後,它仍然無法正常工作,它必須不是每次都設置變量。我不認爲這是一個緩存問題,因爲這會更有可能導致在您返回時意外登錄,但在我訪問開始時總是無法登錄我 – 2011-05-28 12:37:03
是否可能是因爲我正在設置會話變量的鍵使用$ type而不是像'client'或'guest'這樣的字符串? – 2011-06-01 15:11:21