PHP会话问题

时间:2011-02-17 18:44:57

标签: php session

当我的网站有一部分时,任何用户(不仅仅是已登录)都可以对表单上的内容进行评分,从1到5开始。表单及其后端工作正常。

我这样做,以便在表单POST时,它会$_SESSION['rated'];等于一。然后我立即重定向到原始页面。在原始页面上,如果$_SESSION['rated']; = 1,原始评级表单,则表单不可见,但如果它为0(默认情况下),则显示表单。

它第一次运行,但从那以后我无法以任何方式停止会话或取消设置变量。我甚至尝试过不同的浏览器,清除所有cookie,这样做:

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

但实际上没有任何内容清除会话,我的表单仍显示隐身,因为$_SESSION['rated'];仍然等于1。

我该怎么办?

4 个答案:

答案 0 :(得分:1)

你写了if $_SESSION['rated']; = 1

检查您的代码,如果您真的使用=(赋值运算符)。如果你这样做,那就是罪魁祸首 - 比较php(和其他类c语言)中的值,使用==(比较运算符)

答案 1 :(得分: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

答案 2 :(得分:0)

会话只是一个文件。找到PHP安装保存会话文件的位置,并在请求之间查看其内容。内容只是$ _SESSION的序列化版本,并且相当容易阅读。如果在你执行session_destroy / unset / etc之后你的'rating = 1'仍然在那里,那么其他东西就会在你的会话被序列化并保存之前恢复它。

答案 3 :(得分:0)

尝试:

session_destroy();
$_SESSION = array();