【发布时间】:2019-07-12 08:08:53
【问题描述】:
我的网站中有一个个人资料页面,该页面使用会话变量以他/她的名字欢迎用户。取消设置此变量后,页面仍然可以访问该名称。我无法正确擦除数据。
我尝试将其设置为 null、session_unset 和 session_destroy
<?php @session_start(); ob_start(); ?>
//Some HTML code here
<?php
if( isset($_SESSION["user"]) && $_SESSION["login"]) {
echo '<div><p>welcome ' .$_SESSION["user"]. '!</p></div>';
echo
"<form action='' method='post'>
<input type='submit' name='use_button' value='Log out' />
</form>";
if(isset($_POST['use_button'])) {
$_SESSION["login"] = false;
unset($_SESSION["user"]);
session_unset();
echo "logout successful.";
echo '<script>window.location.href = "same-page.php";</script>';
}
}
else
echo 'no login data.';
?>
//Some HTML code here
<?php ob_end_flush(); ?>
我预计在重定向之后,第一个 if 条件不会得到满足,它会给出输出“无登录数据”,但它仍然可以访问会话变量。
外部php文件:
<?php
session_start();
$_SESSION["user"] = '' ;
$_SESSION["login"] = false ;
echo '<script>window.location.href = "../profile.php";</script>';
?>
【问题讨论】:
-
鉴于您问题中的代码,我无法解释为什么会话没有被清空。您确定这是该 PHP 脚本中的所有代码吗?或者,您是否尝试过仅包含此代码的脚本?
-
是的,剩下的就是 HTML。
-
您可以在
session_unset()之后尝试session_write_close()。以防万一 HTML 部分非常大。还要检查两个函数的结果,应该是true。 -
session_write_close() 不起作用。两者的结果都是错误的。
-
“已解决:[…]” - 请不要将其放入问题中,而是写一个自我回答。 stackoverflow.com/help/self-answer
标签: php