[英]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.