PHP检查用户是否在线

时间:2013-12-10 20:17:23

标签: php timestamp

有谁能告诉我为什么这不起作用?在我的数据库lastactive2013-12-10 16:15:12,每次用户刷新我网站上的任何页面时都会更新。

我选择它并将其设置为变量:

$lastactive = $row[5]; 

这是我认为应该工作的地方,但事实并非如此。使用10秒进行测试。

if(time() > $lastactive+10){
    print('<div id="user_online_status" style="color: #aaa;">[OFFLINE]</div>');
}
else if(time() < $lastactive+10){
    print('<div id="user_online_status">[ONLINE]</div>');
}

4 个答案:

答案 0 :(得分:4)

您正在将unix时间戳与MySQL日期时间字符串进行比较。在比较两者之前,您需要将其转换为unix时间戳:

$lastactive = strtotime($row[5]);

答案 1 :(得分:3)

SELECT 语句替换为:

SELECT lastOnline FROM user

类似......

SELECT UNIX_TIMESTAMP(lastOnline) FROM user

就是这样。您当前正在针对UNIX时间戳检查日期字符串。

答案 2 :(得分:2)

我没有看到检查时间的好主意。

如果用户没有刷新页面,他让页面打开然后去吃饭怎么办? 。他会退出?这将是无聊的。

我想更好的是使用卸载

   $(window).unload(function() {
      // Send an Ajax request to logout.php
 });

答案 3 :(得分:2)

如果用户没有刷新页面,您可以使用cron在服务器上进行检查。

$limit = $userOnline+60; // cron set to run every minute

if($userOnline < $limit)
  $userStatus = "offline";
else
  $userStatus = "online";