繁体   English   中英

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

[英]Why doesn't my online users page work correctly?

我想检查用户是否在线。 我的成员表中有一个状态列。 该列记录用户活动的最后时间戳。 如果用户在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";
}

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

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

status = (NOW()应该是status > (NOW()如你想要的所有时间段内,而不仅仅是5分钟前

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

"SELECT username FROM members WHERE status BETWEEN " . time() - (60*5) . " AND " . time() . ")"
$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服务器中运行查询,然后你就会清楚问题:)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM