作者tayyih (找回當初讀研究所的動力)
看板PHP
標題[請益] 一個session的問題
時間Sun Jun 21 16:05:40 2009
我有一個session的問題一直想不透,
我是想要讓使用者登入失敗後跳回原來的登入頁面並顯示登入失敗的文字,
目前的作法是在帳號密碼檢查錯後後
設定一個session變數$_SESSION['LoginFailed'] = TRUE,
然後再轉回原來的頁面,程式碼如下:
$_SESSION['LoginFailed'] = TRUE;
header("Location: index.php" );
另外在原來的頁面中去判斷$_SESSION['LoginFailed']是否已經設定,
是的話就印出登入失敗的文字,程式碼如下:
if(isset($_SESSION['LoginFailed']))
echo "帳號密碼錯誤";
到這裡都可以正常執行,但是這樣子做有一個問題是,如果曾經登入失敗過,
就算後來離開了此頁面,下次要再來這個頁面登入時,失敗文字仍然還會顯示,
原因是session變數還存在,因此我在echo之後,就把這個session變數unset掉,
程式碼如下:
if(isset($_SESSION['LoginFailed'])) {
echo "帳號密碼錯誤";
unset($_SESSION['LoginFailed']);
}
但是這樣子寫之後,就算登入失敗也不出現失敗文字了,我想了很久都想不出來為什麼,
session變數不是在echo之後才被unset的嗎?怎麼會不出現了?
請大家幫我解惑,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.150.2
※ 編輯: tayyih 來自: 61.31.150.2 (06/21 16:05)
推 pupulu10 :我是新手 我也看不出來 不過用request好像也不錯 06/23 10:46
推 maplenote :我都用GET傳值而已耶XD" 收到傳值就顯示不同錯誤~ 06/26 10:01
→ maplenote :至於SESSION 我記得好像不能在echo之後做設定吧 06/26 10:02
推 maplenote :要不要試試將echo跟unset的順序反過來? 06/26 10:52