为什么我的在线用户页面无法正常工作?

时间:2013-12-26 14:13:55

标签: php mysql database status

我想检查用户是否在线。我的成员表中有一个状态列。该列记录用户活动的最后时间戳。如果用户在5分钟内没有做任何事情(意味着他没有激活),则用户应该从users_online页面消失。

这是我存储用户的上一个活动的方式:

$setStatus = mysqli_query($mysqli,"UPDATE members SET status = '".time()."' WHERE id = '".$_SESSION['user_id']."'");

现在在users_online页面上,我选择状态(最新时间戳)是当前时间的用户名,间隔为5分钟。意思是,如果用户最新时间戳在5分钟的间隔内,则应显示用户USERNAME。如果超过5分钟,他将被标记为离线。

这就是我所拥有的:

$getUsers = mysqli_query($mysqli,"SELECT username FROM members WHERE status = (NOW() - INTERVAL 5 MINUTE)");
if ( mysqli_num_rows($getUsers) > 0 ) { 
     $row = mysqli_fetch_array($getUsers);
echo $row['username']; 
} else {
 echo "Nobody online";
}

现在的问题是;它一直说在网上没有人,即使我一直活跃着我的账户。

我错过了还是做错了什么?任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:3)

status = (NOW()应该是status > (NOW(),因为您想要在一段时间内完成,而不仅仅是5分钟之前

答案 1 :(得分:1)

time()给出自1970年以来的秒数,在你的sql语句中你应该说类似

"SELECT username FROM members WHERE status BETWEEN " . time() - (60*5) . " AND " . time() . ")"

答案 2 :(得分:0)

$t =time()-5*60;    
$strSql = "SELECT username FROM members WHERE status > ".$t;
echo $strSql;

// run this query into my sql server
$getUsers = mysqli_query($mysqli,$strSql);
if ( mysqli_num_rows($getUsers) > 0 ) { 
    $row = mysqli_fetch_array($getUsers);
    echo $row['username']; 
} else {
    echo "Nobody online";
}

尝试在MySQL服务器中运行查询,然后您将清楚问题:)

答案 3 :(得分:0)

使用PHP time()函数而不是mysql now()函数。

"SELECT username FROM members WHERE status >= '".time()-(60*5)."')"