正确注销网页的方法

时间:2015-10-11 12:34:09

标签: php session cookies

我已经使用session_destroy()很长一段时间来结束用户的会话。但经过深入研究后,我意识到它只会破坏服务器端的会话数据。 cookie仍将存储在客户端,这意味着浏览器将继续发送cookie,但会话ID不再有效。 那么,退出会话的正确方法是什么?是否还需要在客户端删除cookie?

1 个答案:

答案 0 :(得分:0)

根据manual,还有更多工作要做:

  

为了完全杀死会话,喜欢将用户注销掉,   会话ID也必须取消设置。如果使用cookie来传播   会话ID(默认行为),然后会话cookie必须是   删除。 setcookie()可以用于此。

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// Finally, destroy the session.
session_destroy();
?>