PHP>从在线用户中读取cookie(在线用户)

时间:2017-02-07 14:22:51

标签: php cookies

我有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 {


        }

2 个答案:

答案 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'");

我希望这会对你有所帮助!

注意:您需要将此代码更新为您自己的代码,因为这是作为示例编写的。