我的PHP应用程序的菜单上有一个很好的LogOut按钮,但有些人不使用它,他们只是退出了浏览器。
有什么方法可以检测到我是否退出浏览器和/或在打开应用程序的情况下关闭最后一个选项卡?(我意识到它不能处理浏览器崩溃,但它比我现在有的要好&涵盖了99%的情况)。
我明白我不能使用JavaScript,因为DOM不会让我的JS知道其他的浏览器标签和窗口。
我使用了基于计时器的解决方案,但是一个用户将超时设置为999999分钟,同时将用户数量设置为1,然后关闭浏览器并将自己锁在外面。
但是,另一种方法呢?从横向来考虑,伙计们。当用户使用我的应用程序中的页面打开新选项卡时,我是否可以推送cookie?然后在用户想要关闭选项卡时删除cookie?并检查我是否正在撤回最后一个cookie,并通知服务器将其视为注销?
如果不是cookies,还有其他方法吗?(在页面打开和关闭时使用Ajax,服务器可以确定最后一个选项卡是否已关闭?)
发布于 2011-10-18 02:45:23
如何捕获web页面的unload事件,以便在卸载时使用ajax调用服务器上的脚本。然后,此脚本将存储浏览器调用它的时间。
如果在20秒内,浏览器访问了另一个使用相同会话的页面,这将意味着用户正在浏览您的站点。然后,您就可以安全地取消从ajax调用中存储的时间。
在服务器端,有一个每分钟运行一次的cron作业(如果您担心资源问题,每分钟运行一次),该作业检查是否有任何会话设置了卸载时间,以及卸载时间是否大于25秒。如果是这样,则意味着用户已关闭浏览器、选项卡或已从您的应用程序导航离开。然后,它应该被保存,以便为浏览器进行任何清理或注销。
您可能需要根据互联网/服务器的速度以及用户导航时页面刷新的速度来调整时间。
https://stackoverflow.com/questions/7801671
复制