如果用户登录,则其显示状态为" 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"
任何人都可以给我一个想法! 对不起,我的英语不好:(
答案 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;
});