【问题标题】:Print out current active users php打印出当前活跃用户 php
【发布时间】:2017-04-25 17:53:40
【问题描述】:

我已经在纯 php + ajax 上进行了聊天......它运行良好,但是我试图以某种方式显示当前登录到我的聊天中的所有用户。我不知道如何实现这一点,但我想也许我可以以某种方式计算用户登录聊天时启动的活动会话。这里有人可以指导我应该怎么做吗?我尝试查看其他问题,但没有一个能够帮助我解决我的问题。

不知道这是否有帮助,但这是我从数据库中获取用户的登录代码

while($row = $result->fetch_object()){
if($username == $row->username)
{

        $checkPassword = password_verify($password,$row->password);
        if($checkPassword ){   
            session_start();
            $_SESSION['loggedIn'] = true; 
            $_SESSION['user'] = $row->username;
            $_SESSION['admin'] = $row->admin;
            $_SESSION['userpic'] = $row->userpic;
            $_SESSION['displayname'] = $row->displayname;
            $_SESSION['id'] = $row->id;
            header("Location:music.php?success");
            exit();
        }


}
else{
    $fail = true;
    if($fail){      
echo "<script>
alert('You typed in wrong password or username, please try again mate!');
window.location.href='music.php';
</script>";
}
}
}

【问题讨论】:

  • 您能发布提供有关聊天信息的代码吗?尤其是当它与数据库交互或监控当前在聊天室中的人时。
  • $fail = false; 注意这条线永远不会运行。

标签: php mysql


【解决方案1】:

建议您制作一个脚本,每 1-5 分钟向服务器发送一次请求以更新 last_online 数据库字段。然后,当您从数据库中获取用户时,从现在开始添加条件 last_online 不到 1-5 分钟。

【讨论】:

    【解决方案2】:

    首先,您的代码中存在错误。您正在设置$fail to true,然后检查if($fail) {...}。此代码将始终运行。我想你想;

    $fail = true;
    while(users) {
      if(userName match && password check pass) {
        $fail = false;
      }
    }
    if ($fail) { do the error handling }
    

    就显示活跃用户而言,您需要定义活跃用户的含义。如果更新用户的上次登录时间,则可以运行类似"SELECT userName FROM users WHERE login_time &gt; 'calculate xx minutes ago'"的SQL查询

    【讨论】:

      猜你喜欢
      • 2013-02-27
      • 2013-11-12
      • 2015-02-25
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      相关资源
      最近更新 更多