我正在处理登录/注销脚本。我无法理解为什么注销不起作用:我已经尝试了所有可能的方法,但它不会破坏会话。
if($_GET['action'] == 'logout') {
$_SESSION = array();
session_destroy();
header("location: /index.php");
exit();
}
我不必添加session_start()
因为代码在主页中,并且会话已经开始。
提前谢谢。
修改
当我点击退出按钮时实际上有效,事实上我进入主页并且我不再登录了。但如果我去另一个网站,然后我回到我的身上,我就是记录。
并且,更奇怪的是:使用Internet Explorer,它可以工作。这怎么可能?我的意思是,我习惯了浏览器与CSS之间的差异,而不是PHP:)
答案 0 :(得分:2)
在页面顶部
session_start();
其他方面,以下方法无效
if($_GET['action'] == 'logout') {
$_SESSION = array();
session_destroy();
header("location: /index.php");
exit();
}
答案 1 :(得分:1)
请添加
在页面顶部session_start();
,然后尝试:
if($_REQUEST['action'] === 'logout') {
$_SESSION = array();
session_destroy();
header("location:index.php");
exit();
}
答案 2 :(得分:0)
尝试删除所有Cookie或仅删除用于登录身份验证的Cookie。
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}