如果用户关闭了他的兄弟,请更新 mysql 查询


Update mysql query if user closed his Broswer

如果用户登录,则显示状态为"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]'");

好吧,我的问题..如果用户关闭了他/她的浏览器,有没有办法将查询更新为状态 = "OFF"?现在它显示用户现在在线,如果用户关闭浏览器。我希望如果用户关闭了浏览器,那么它显示用户现在处于"离线状态"

谁能给我一个主意!
对不起,我的英语不好:(

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

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

相反,您可以做的是创建一个表来记录人们何时访问您的网站,然后运行 cron 作业来检查他们更改页面以来已经过了多长时间。如果时间超过 X 分钟,请将该用户的状态设置为脱机。

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

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

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

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

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

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

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