0

如果用户已登录,则显示状态为“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' ?现在如果用户关闭浏览器,它会显示用户现在在线。我想如果用户关闭浏览器然后显示用户现在是“离线”

谁能给我一个想法!
对不起我的英语不好:(

4

4 回答 4

1

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

于 2012-05-05T15:08:19.660 回答
0

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

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

于 2012-05-05T15:10:35.273 回答
0

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

您可以通过定期检查数据库来更新。

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

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

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

于 2012-05-05T15:24:02.257 回答
0

是的,你可以通过使用上面 3 的 jquery 来做到这一点

$(window).on("beforeunload", function(){
   // and use browser online function navigator.onLine;
});  
于 2019-01-28T22:01:05.350 回答