php – 取消设置会话当浏览器选项卡关闭时
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 取消设置会话当浏览器选项卡关闭时,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2243字,纯文字阅读大概需要4分钟。
内容图文
用户进入网站时,会发送默认语言,同时强制用户从列表中选择语言…
当用户选择一种语言时,它会设置$_SESSION [‘language’] = $_POST [‘lg’];
同时我设置另一个$_SESSION [‘sestime’] = time();在这个会话中,我可以这样做:
if(isset($_SESSION['sestime']) && (time() - $_SESSION['sestime'] > 600)) {
session_unset(); session_destroy();
header("Location: $sred");
exit;
}
$_SESSION['sestime'] = time();
如果在10分钟内没有任何活动它会破坏/删除/取消设置任何会话,那么我们的想法是再次询问语言…现在,这是“正常工作”,但我想要的是“检测”当用户即将关闭浏览器选项卡时,网站选项卡…如果用户关闭选项卡,则“销毁/删除/取消设置”此网站的任何会话…
那可能吗?
解决方法:
会话Cookie通常在没有过期时间的情况下发送,这意味着它们会在浏览器关闭时被删除,因此无论如何会话都会丢失.
1)Destroy or unset session when user close the browser without clicking on logout
您可以设置会话数据的到期时间,使用每个session_start调用对其进行测试,并在会话过期时销毁该会话:
session_start();
if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) {
session_destroy();
$_SESSION = array();
}
$_SESSION['EXPIRES'] = time() + 3600;
2)destroy session when broswer tab closed
使用自己的方法实现会话超时.使用表示上次请求时间的简单时间戳,并使用每个请求更新它:
你需要编写与此类似的代码
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// request 30 minates ago
session_destroy();
session_unset();
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time
3)How to change the session timeout in PHP?
session_start(); // ready to go!
$now = time();
if (isset($_SESSION['discard_after']) && $now > $_SESSION['discard_after']) {
// this session has worn out its welcome; kill it and start a brand new one
session_unset();
session_destroy();
session_start();
}
// either new or old, it should live at most for another hour
$_SESSION['discard_after'] = $now + 3600;
4)当用户离开页面时,卸载事件被发送到窗口元素.这可能意味着很多事情之一.用户可以单击链接离开页面,或在地址栏中键入新URL.前进和后退按钮将触发事件.关闭浏览器窗口将导致触发事件.即使页面重新加载也会首先创建卸载事件.
$( window ).unload(function() {
//use ajax to call another page to session_destroy();
});
问题是:如果用户在您的网站上打开了两个或更多标签,该怎么办?如果他们关闭一个选项卡,另一个选项卡将被有效注销.
内容总结
以上是互联网集市为您收集整理的php – 取消设置会话当浏览器选项卡关闭时全部内容,希望文章能够帮你解决php – 取消设置会话当浏览器选项卡关闭时所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。