2011-02-17 127 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();