在TAB / Window关闭时清除PHP会话

时间:2014-11-15 19:11:26

标签: php session

在TAB / Window关闭时清除PHP会话

我想在例如我的网站的标签/窗口关闭,php会话将会清楚。

我确实使用time()使一个php非活动状态到期1800秒,但我的网站还要求如果用户关闭我网站的所有选项卡/窗口,他的php会话将过期/无效并需要再次授权

我使用以下标题

<meta http-equiv="PRAGMA" content="NO-CACHE">

坚持它也不行'。我也使用expires 0元头和no-cache但同样的问题。

如果我在我的网站管理员面板中打开一个新选项卡并输入密钥,会话仍然有效,正常情况下,如果我没有登录,我会在管理面板中键入,它会将我重定向到登录页面。

但由于会话仍然有效,这成了一个问题。

1 个答案:

答案 0 :(得分:0)

我不确定你为什么要在封闭的标签上销毁它。但这应该可以解决问题。 (它使用jQuery)

Javascript / jQuery

    window.onbeforeunload = function(){
     $.ajax({
        type: "GET",
        url: "destroy.php"
     });
    }

<强> PHP

<?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();
?>

请参阅http://php.net/manual/en/function.session-destroy.php如何破坏您的会话