我在结束会话中遇到问题,我有MAIN.PHP我的会话开始,在我的MAIN.php内我有<a href = "logout.php">logout</a>
这是我的logout.php的代码
<?php
unset($_SESSION['user']);
unset($_SESSION['pass']);
session_destroy();
echo"<script> window.location.href = '../index.php' ; </script>";
exit();
?>
点击链接注销后,当我按下后退按钮时,我仍然可以访问这些页面,但仍保留我的SESSION变量。
答案 0 :(得分:6)
我要采取疯狂的刺,并说this answer将解决你的问题。
根据PHP Docs For session_destroy():
session_destroy()
销毁与当前会话相关的所有数据。 不取消设置与会话相关联的任何全局变量,或取消设置会话Cookie 。要再次使用会话变量,必须调用session_start()。为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie 。 setcookie()可以用于此。
总结一下似乎是你的问题,讨厌的会话cookie(标识会话)没有被取消。因此,当您点击后退按钮,并且session_start();
出现在脚本的顶部时,仍会引用全局会话变量。正如另一个答案所示,试试:
$_SESSION = array();
清除所有全局会话数据。此外,正如文档所说,取消设置会话cookie。
答案 1 :(得分:3)
您可能还想在其中添加session_start()
session_start();
unset($_SESSION['user']);
unset($_SESSION['pass']);
session_destroy();
header('Location: index.php');
另外,我个人更喜欢取消整个会话,如unset($_SESSION);
,但每个人都有自己的做事方式