当用户关闭选项卡或窗口时销毁会话
Destroying a session when user closes tab or window
当用户在没有正确注销的情况下关闭选项卡或窗口时,我希望销毁会话。我认为这可能奏效:
javascript:
$(window).on("beforeunload", function(){
alert("Beforeunload called");
$(document).load("vve_inc/php/vve_logout.php");
});
php:
<?php
session_start();
session_destroy();
?>
警报工作正常,但php脚本不正常。有人知道吗?
警报停止执行代码。
在卸载时执行AJAX请求是不稳定的,并且不会总是执行。
如果你只是有一个注销按钮或会话超时会更好。
qwuertynl是正确的,但是您可以在PHP中使用ignore_user_abort();
,AJAX请求是否完成也无关紧要。我过去曾成功地大规模使用过它。
http://php.net/manual/en/function.ignore-user-abort.php
无论请求是否中止,调用该函数都会使PHP脚本运行完成。
相关文章:
- 如何检测用户是否在同一会话中打开了多个窗口或选项卡
- 弹出窗口不会根据需要在每个会话中显示一次(如客户端所述)
- 会话丢失窗口.位置.href.
- 当用户关闭选项卡或窗口时销毁会话
- 创建在 ASP 会话中保留的弹出窗口
- IE 窗口.在第二个会话时打开 打开一个具有第一个会话 ID 的窗口
- 会话超时弹出窗口 - 如何将javascript放入php中
- 会话弹出窗口
- Javascript 警报弹出窗口是否扩展了 PHP 会话
- 在弹出窗口中丢失 asp.net 会话.仅在IE中,仅适用于某些用户
- 简单模式弹出窗口显示每个会话一次
- 如何使用过期会话弹出窗口
- 一次性显示会话中的模式窗口
- 如何删除会话属性关闭弹出窗口在救生筏
- 如何打开新的web浏览器,而不是在点击链接时弹出,该链接与父窗口有单独的http会话
- 打开新窗口并从父窗口加载CSS和js,还可以共享会话
- 使用窗口对象进行会话存储,而不是使用AmplifyJS存储
- 目前接受的在浏览器窗口中处理客户端会话信息的无cookie方法
- 打开一个新窗口创建一个新会话
- 在窗口关闭时清除会话