2017-04-25 190 views
0

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

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

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>"; 
} 
} 
} 
+0

您可以发布提供有关聊天信息的代码吗?特别是如果它与数据库交互或监视当前处于聊天室中的人员。 – Naltroc

+0

'$ fail = false;'注意这行永远不会运行。 –

+0

从http://stackoverflow.com/questions/6431666/design-question-how-to-show-number-of-users-online开始 –

回答

0

编号建议你做的是发送请求到服务器的每1-5分钟的脚本更新last_online数据库字段。然后,当你从数据库添加条件last_online获取用户从现在起1-5分钟。

0

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

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

就显示活动用户而言,您需要定义什么是活动手段。如果您更新用​​户的最后登录时间,那么您可以运行SQL查询,如"SELECT userName FROM users WHERE login_time > 'calculate xx minutes ago'"