如果用户关闭浏览器,请更新mysql查询

时间:2012-05-05 15:04:16

标签: php

如果用户登录,则其显示状态为" ON"因为我运行查询以显示用户现在在线:

在线:

$sqlonline = mysql_query("INSERT INTO useronline VALUES('$_SESSION[id]', '$uname', '$ip', 
'$time', '', 'ON')");

如果用户已注销,则我更新查询以显示用户处于脱机状态

离线

$q=mysql_query("UPDATE useronline SET status = 'OFF',  time_out  = '$time' WHERE 
session_id ='$_SESSION[id]'");

好吧,我的问题..如果用户关闭了他/她的浏览器,有没有办法将查询更新为status = ' OFF' ?现在,如果用户关闭浏览器,它会显示用户现在在线。我想如果用户关闭浏览器,那么它的节目用户现在" OFFLINE"

任何人都可以给我一个想法! 对不起,我的英语不好:(

4 个答案:

答案 0 :(得分:1)

在用户尝试关闭浏览器标签页时,没有可靠的方法向服务器发送内容。您需要写入来自用户的最后一个请求的数据库时间。当这个时间过去足够远时,就意味着用户已经离开了。

答案 1 :(得分:0)

您可以尝试使用Javascript执行此操作并检查窗口关闭事件,但是由浏览器决定是否支持。

您可以做的是创建一个表来记录人们访问您的站点时,然后运行一个cron作业来检查他们更改页面后的时间。如果超过X分钟,则将该用户的状态设置为离线。

答案 2 :(得分:0)

当用户关闭窗口时,您无法更新到db。

您可以定期检查db。

进行更新

您可以在db中创建名为last_updated_time的字段。如果用户登录,则使用setInterval()或setTimeOut()方法每隔几(3或5)秒从用户页面更新此列中的当前时间。

如果用户关闭了窗口,则last_updated_time将不会更新。

在要显示在线/离线状态的页面中,检查当前时间与用户的last_updated_time之间的时差。如果时差很长,请将用户状态更新为OFF并显示脱机状态。

答案 3 :(得分:0)

是的,您可以使用3以上的jquery来实现

$(window).on("beforeunload", function(){
   // and use browser online function navigator.onLine;
});