2011-05-26 57 views
0

我有一個使用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頁面,所以它不是一個延遲,它只是沒有設置。

+1

它可能是一個緩存問題? – Nanne 2011-05-26 20:00:32

+0

不,我推斷,因爲我記錄它5秒後,它仍然無法正常工作,它必須不是每次都設置變量。我不認爲這是一個緩存問題,因爲這會更有可能導致在您返回時意外登錄,但在我訪問開始時總是無法登錄我 – 2011-05-28 12:37:03

+0

是否可能是因爲我正在設置會話變量的鍵使用$ type而不是像'client'或'guest'這樣的字符串? – 2011-06-01 15:11:21

回答

1

我不認爲你應該回應變量,因爲你正在設置它?這對我來說沒有任何意義。

echo $_SESSION['welcome'] = 'You have logged in successfully.'; 

如果$ type被貼過的客人或客戶,應該不會是$_SESSION[$_POST['type']]; 或者你設置$類型的POST變量中某處頁?

+0

您引用的表達式的結果是'$ _SESSION ['welcome']'成爲字符串''您已成功登錄',然後該字符串被回顯。 '='運算符的返回值是右邊的值,賦予的值(以及賦予的變量的新值)。 – Hammerite 2011-05-26 20:13:13

+0

我知道它做什麼,我只是不知道爲什麼有人會這樣做。 – 2011-05-26 20:16:04

+0

你的意思是這個位'echo $ _SESSION ['welcome'] ='你已經登錄成功。';'?我很確定這很好。無論哪種方式,它都是在麻煩的一套完成後完成的。這只是簡寫 – 2011-05-26 20:27:54

0

您必須包括此頁面的頂部(前任何HTML或whitepace輸出,< PHP之後?):

session_start(); 

編輯:

我知道這是舊的文章。但對於任何需要它的人來說,這是它!