0

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

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

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

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

先感谢您。

编辑

当我单击注销按钮时,它实际上可以工作,实际上我进入主页并且我不再登录。但是如果我去另一个网站,然后我回到我的网站,我已经登录了。

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

4

3 回答 3

2

在页面顶部

session_start();

否则以下将不起作用

if($_GET['action'] == 'logout') {
  $_SESSION = array(); 
  session_destroy();
  header("location: /index.php");
  exit();
}
于 2013-05-05T14:53:12.060 回答
1

session_start();在页面顶部添加,然后尝试:

if($_REQUEST['action'] === 'logout') {
  $_SESSION = array(); 
  session_destroy();
  header("location:index.php");
  exit();
}
于 2017-08-17T11:55:49.080 回答
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

于 2013-05-05T14:55:11.350 回答