2017-04-25 41 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'"