我创建了一个基于会话的简单登录页面。
session_start();
并添加了一个包含此
的注销页面session_destroy();
现在,当我关闭浏览器/页面并重新打开它时,会话的值仍然存在。
我想知道如何在页面/浏览器关闭时完全销毁会话。
答案 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();