一尘不染

(PHP)如何正确销毁会话cookie?

php

我正在尝试正确注销管理员用户。这是我的功能:

function logout()
{
    $_SESSION = array(); //destroy all of the session variables
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
    session_destroy();
}

基本上,一旦我对密码进行了身份验证,就将会话设置为有效(总共只有1个用户)。现在,当管理员点击注销时,我想销毁当前会话,并销毁cookie,以便他们不能只是使用浏览器中存储的会话cookie返回管理页面。但是我的代码不起作用。我点击注销,然后我可以直接导航回到管理页面。但是,如果我删除Cookie,则该功能非常完善。那么这里的cookie删除功能怎么了?


阅读 396

收藏
2020-05-29

共1个答案

一尘不染

也许您的问题不是Cookie,而是浏览器显示了您的管理页面的缓存版本。可以吗?如果在您点击时消失F5,可能就是这样。可以通过设置正确的cache-control标题来进行排序。

查看有关如何设置缓存的SO问题。问题是正好相反(强制浏览器进行缓存),但是您会发现要更改哪些内容才能关闭缓存。

2020-05-29