关闭时销毁PHP会话

时间:2010-11-10 16:29:31

标签: php session

我创建了一个基于会话的简单登录页面。

session_start();

并添加了一个包含此

的注销页面
session_destroy();

现在,当我关闭浏览器/页面并重新打开它时,会话的值仍然存在。

我想知道如何在页面/浏览器关闭时完全销毁会话。

5 个答案:

答案 0 :(得分:24)

如果您使用:

session_set_cookie_params(0);
session_start();

当浏览器关闭时,您的会话cookie将会破坏...因此,在关闭浏览器之前,您的会话将会很好。 IE浏览器。您登录后,您已登录,关闭浏览器,重新打开它,再次访问该站点,您将无法登录。

答案 1 :(得分:5)

您将只能使用javascript检测浏览器窗口是否已关闭,此时您可能会触发Ajax请求以执行注销操作。

答案 2 :(得分:0)

服务器无法检测到浏览器或标签已关闭,您可以使用Javascript或Ajax但很抱歉我对此不了解。

我的建议是使用会话超时,因此如果用户没有采取任何操作,会话将被销毁。这是一个例子:

// destroy every 2 minutes

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
    // last request was more than 2 minutes ago
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

// end of code

希望这能帮到你

答案 3 :(得分:0)

如果会话存在,请通过销毁会话并将用户重定向到主页来注销。临时cookie用于存储会话标识。这个cookie也被破坏了。

<?php
    // This is the logout page for the site.
    session_start();//access the current session.
    //if no session variable then redirect the user
    if (!isset($_SESSION['user_id'])) {
    header("location:index.php");
    exit();
    }else{ //cancel the session
        $_SESSION = array(); // Destroy the variables
        session_destroy(); // Destroy the session
        setcookie('PHPSESSID', ", time()-3600,'/', ", 0, 0);//Destroy the cookie
        header("location:index.php");
        exit();
    }
    ?>

答案 4 :(得分:-1)

删除会话变量 -     session_unset();

销毁会话 -     session_destroy();

session_unset();
session_destroy();