在选项卡上清除PHP会话



我每次用户关闭其选项卡时都在注销。我已经看到了所有类似的问题,但是我仍然没有找到任何可行的问题。

这是我所做的:

<script type="text/javascript">
    $(document).ready(function() {
        $(window).bind("beforeunload", function() {
            confirm("Do you really want to logout?") && $.ajax({
                type: "GET",
                url: "/admin/account/logout"
            })
        })
    });
</script>

我尝试过没有confirm,但它仍然无法使用。我绝对确定它可以完成,因为我的银行的网站具有相同的功能。

编辑:没有confirm,它确实会启动注销Ajax,但即使我浏览页面。这使我想起,我的银行的网站使用诸如Angularjs之类的东西,而Angularjs并不是真正的链接浏览系统,对吗?也许这就是为什么它在那里工作?

您的代码问题是该请求是异步执行的,并通过窗口的关闭而终止。如果将async Parenter设置为False,则在关闭选项卡/窗口之前将执行AJAX请求。

不幸的是,这无法解决您的问题,因为每次您要离开页面时,此事件都会发射。如果您只是想破解解决方案,则可以使用此处提到的方法:https://stackoverflow.com/a/a/444057659/5173095-触发服务器端的超时并在用户中注销用户,如果他不提出另一个请求超时之后。

每次您说浏览器卸载当前HTML时,beforeunload都会触发。即使您单击链接,也会发生这种情况。当您选择一个选项卡时,您还可以关闭该页面JS执行的环境。我认为它不能本地进行。

最新更新