使用Jquery卸载功能从在线用户列表中删除用户

时间:2014-01-14 08:15:55

标签: php jquery

我想知道有没有一种方法可以通过$(window).unload jQuery函数从在线用户列表中删除用户? 或继续使用PHP来检查它? 我认为这不是一个正确的方法,因为用户可以编辑它,但我需要更多的理由。 代码示例:

<script src="jquery.min.js"></script>
 <script>
 $(window).unload(function() {

   $.ajax({ 
   type: "GET", 
   url: 'http://localhost/delete_session.php', 
   data: "id=" + "session id";
   });
});
</script>

谢谢!

2 个答案:

答案 0 :(得分:2)

不适用于多个标签:如果您的用户在两个不同的标签页中打开您的应用,则关闭两个标签中的任何标签都会删除该会话,另一个标签将变为“无法使用”。

您不应该仅仅依靠客户端的行为来管理您的会话:客户端的浏览器可能会错误地退出(程序错误,电池耗尽,kill -9等...)并且不会在退出时执行卸载回调。

答案 1 :(得分:0)

执行在线列表的正确方法可能是使用心跳请求。

您的javascript向服务器发送小请求,表明它们“活着”。

如果用户关闭了所有页面,心跳停止,您以某种方式将其从服务器上的在线用户列表中删除。