2013-12-10 89 views
1

谁能告诉我为什么这不起作用?在我的数据库lastactive中是2013-12-10 16:15:12,每次用户刷新我网站上的任何页面时都会更新。PHP检查用户是否在线

我选择它,并把它作为一个变量:

$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>'); 
} 
+1

你正在选择一个时间** STRING **,这意味着你正在测试'if(123456>'2013-12-10 hh:mm:ss')'...看那个一会儿,并试图找出为什么它永远不会工作。 –

回答

2

更换你选择声明来自:

SELECT lastOnline FROM user 

喜欢的东西......

SELECT UNIX_TIMESTAMP(lastOnline) FROM user 

这它。您当前正在根据UNIX时间戳检查日期字符串。

+0

正是我需要的,谢谢! – user3010610

4

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

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

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

如果用户不刷新页面,他会让页面打开并去吃东西? 。他会被注销?这将是安永。

我想更好的方法是使用卸载

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

如果用户犯规刷新页面,你可以使用cron的检查它在服务器上。

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

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