我有10个页面和用户数据库。
在索引中,我要求用户从下拉菜单中选择他的名字,然后我将值保存为Cookie。
我的目标是在每个在线页面上显示。
我当前的方法只显示一个用户, 即:如果用户A选择了他的名字,则只有他的名字将显示在该页面上谁在线。
我需要向所有用户显示
任何想法?
我的代码
if(isset($_COOKIE[UserID])) {
$UserID = $_COOKIE[UserID];
$UserRequest = "SELECT first_name FROM users WHERE user_id ='$UserID' ";
$UserName = $Connect->query($UserRequest);
while($row = $AgentName->fetch_assoc()) {
$FirstName = $row["first_name"];
}
print "$FirstName";
} else {
}
答案 0 :(得分:0)
为您的用户表添加时间戳,并在每个页面请求时更新它。现在,您可以查询并显示在过去X秒/分钟内请求页面的所有用户。
答案 1 :(得分:0)
您可以在名为lastaction
的用户表中添加新列。每当用户导航到您的网站时,此列都会更新。在此示例中,我们将向所有在线用户显示'最后5分钟。
然后,您可以使用类似这样的查询获取间隔DATE_SUB()
:
SELECT username FROM table WHERE lastaction > DATE_SUB(NOW(), INTERVAL 5 MINUTE) WHERE userid='2'
PHP中的示例:
<?php
$query = $mysqli->query("SELECT username FROM table WHERE lastaction > DATE_SUB(NOW(), INTERVAL 5 MINUTE) WHERE userid='2'");
if($query->num_rows == 0)
{
echo "There are no users online.";
}else{
echo '<ul>';
while($row = $query->fetch_assoc())
{
echo "<li>{$row["username"]}</li>";
}
echo '</ul>';
}
?>
然后在用户点击F5或其他内容时更新lastaction
。
$mysqli->query("UPDATE lastonline = NOW() WHERE userid='2'");
我希望这会对你有所帮助!
注意:您需要将此代码更新为您自己的代码,因为这是作为示例编写的。