2011-02-17 498 views
0

我有我的網站的一部分,當任何用戶(不只是登錄)可以評價一個窗體從1 - 5的東西。形式和它的後端完美的作品。PHP會話問題

我做到了這樣,當表單POST時,它的行程$_SESSION['rated'];等於1。然後我立即重定向到原始頁面。在原始評級表格的原始頁面上,如果$_SESSION['rated']; = 1,則表單不可見,但如果它爲0(默認情況下),則會顯示錶單。

它第一次工作,但從那時起,我一直無法以任何方式停止會話或取消設置變量。我甚至已經嘗試了不同的瀏覽器,清除所有Cookie,這樣做:

session_start(); 
session_unset(); 
session_destroy(); 

但沒有什麼實際中清除會話,以及我的形式仍然顯示不可見的,因爲$_SESSION['rated'];仍然等於1

我應該做什麼? ?

+0

無代碼,沒有很好的答案。 – Shoe 2011-02-17 19:56:01

回答

1

你寫if $_SESSION['rated']; = 1

檢查你的代碼,如果你真的使用=(賦值運算符)。如果你這樣做,這是罪魁禍首 - 比較php(和其他類似C語言)的值使用==(比較運算符)

0

不同的選項:

unset($_SESSION['rated']); //Removes the 'rated' variable form $_SESSION 

unset($_SESSION);   //Destroys everything inside $_SESSION 

$_SESSION['rated'] = 0;  //This might be the best alternative for you 
+0

不,沒有運氣。我不知道爲什麼我能夠將變量設置爲1,但將其重新設置爲0是不可能的。 – AKor 2011-02-17 18:51:08

0

該會話只是一個文件。找到你的PHP安裝在哪裏保留會話文件並在請求之間查看其內容。內容只是$ _SESSION的序列化版本,並且相當容易閱讀。如果你的'rating = 1'仍然在那裏,你做了session_destroy/unset/etc ...之後,其他的東西就是在它被序列化和保存之前恢復你的會話。

0

嘗試:

session_destroy(); 
$_SESSION = array();