我正在计算在线用户数量,但是如果一个人在没有退出的情况下关闭窗口,他就不在线,我需要通过javascript或jquery动态地注销该用户。
当我使用body onunload
事件来检查它是否有效但如果我刷新页面它也会调用body unload事件。
这是我的代码
<script>
function LogmeOut()
{
window.location='logout.php';
}
</script
<body onUnload="LogmeOut();">
.....
.....
</body>
注销php将在关闭窗口之前注销当前用户。 有什么建议吗?
答案 0 :(得分:5)
我认为没有可靠的方法可以告诉你。
最好的办法是当用户访问某个页面时,更新他们在数据库中的活动并设置一个新的到期时间(例如15分钟)。
如果用户在查询时没有活动,您可以将它们视为离线。
答案 1 :(得分:0)
我喜欢Alex的答案,如果您通过JavaScript跟踪活跃用户,肯定会因浏览器崩溃而导致错误,“活跃”但实际上非活动用户会将浏览器闲置等等...
Alex的方法可以避免这一切。
答案 2 :(得分:0)
而不是使用window.onunload
,我更喜欢使用window.onbeforeunload
,然后对logout.php进行ajax调用,如下所示:
window.onbeforeunload = function(){
// make an ajax call to logout.php
};