我想知道有没有一种方法可以通过$(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>
谢谢!
答案 0 :(得分:2)
不适用于多个标签:如果您的用户在两个不同的标签页中打开您的应用,则关闭两个标签中的任何标签都会删除该会话,另一个标签将变为“无法使用”。
您不应该仅仅依靠客户端的行为来管理您的会话:客户端的浏览器可能会错误地退出(程序错误,电池耗尽,kill -9
等...)并且不会在退出时执行卸载回调。
答案 1 :(得分:0)
执行在线列表的正确方法可能是使用心跳请求。
您的javascript向服务器发送小请求,表明它们“活着”。
如果用户关闭了所有页面,心跳停止,您以某种方式将其从服务器上的在线用户列表中删除。