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