选项卡关闭时清除PHP会话?

时间:2017-12-06 08:27:55

标签: javascript php jquery

每次用户关闭它时,我都会尝试注销。我已经看到了所有类似的问题,但我仍然没有发现任何有效的问题。

这就是我所做的:

<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,这不是一个真正的链接浏览系统,对吧?也许这就是它在那里工作的原因?

2 个答案:

答案 0 :(得分:0)

每当您说您的浏览器卸载当前的html时,就会触发beforeunload。即使您点击链接也会发生这种情况。当您选择标签时,您还会关闭执行该页面的js的环境。我不认为它可以原生地完成。

答案 1 :(得分:0)

您的代码存在的问题是请求是异步执行的,并在关闭窗口时终止。 如果将Invalid Date参数设置为false,则会在选项卡/窗口关闭之前执行ajax请求。

不幸的是,这不会解决您的问题,因为每次您要离开页面时都会触发此事件。如果你只是试图破解解决方案,你可以使用这里提到的方法:https://stackoverflow.com/a/44057659/5173095 - 在服务器端触发超时,如果超时超时后没有再发出请求,则注销用户。