当用户关闭选项卡或窗口时销毁会话


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脚本运行完成。