使用session_destroy()注销不起作用

时间:2013-05-05 14:50:39

标签: php session logout

我正在处理登录/注销脚本。我无法理解为什么注销不起作用:我已经尝试了所有可能的方法,但它不会破坏会话。

if($_GET['action'] == 'logout') {
    $_SESSION = array(); 
    session_destroy();

    header("location: /index.php");
    exit();
}

我不必添加session_start()因为代码在主页中,并且会话已经开始。

提前谢谢。

修改

当我点击退出按钮时实际上有效,事实上我进入主页并且我不再登录了。但如果我去另一个网站,然后我回到我的身上,我就是记录。

并且,更奇怪的是:使用Internet Explorer,它可以工作。这怎么可能?我的意思是,我习惯了浏览器与CSS之间的差异,而不是PHP:)

3 个答案:

答案 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, '/');
    }
}

http://www.php.net/manual/en/function.setcookie.php#73484