当我的网站有一部分时,任何用户(不仅仅是已登录)都可以对表单上的内容进行评分,从1到5开始。表单及其后端工作正常。
我这样做,以便在表单POST时,它会$_SESSION['rated'];
等于一。然后我立即重定向到原始页面。在原始页面上,如果$_SESSION['rated'];
= 1,原始评级表单,则表单不可见,但如果它为0(默认情况下),则显示表单。
它第一次运行,但从那以后我无法以任何方式停止会话或取消设置变量。我甚至尝试过不同的浏览器,清除所有cookie,这样做:
session_start();
session_unset();
session_destroy();
但实际上没有任何内容清除会话,我的表单仍显示隐身,因为$_SESSION['rated'];
仍然等于1。
我该怎么办?
答案 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();