2017-04-25 3 views
0

Ich habe einen Chat auf reinem php + ajax gemacht ... es funktioniert gut, aber ich versuche irgendwie alle Benutzer zu zeigen, die gerade in meinem Chat angemeldet sind. Ich habe keine Ahnung, wie ich das erreichen könnte, aber ich dachte, dass ich vielleicht die aktiven Sitzungen zählen könnte, die gestartet werden, wenn sich ein Benutzer im Chat anmeldet. Könnte mir jemand hier einen Hinweis geben, wie ich es tun sollte? Ich habe versucht, andere Fragen zu stellen, aber keiner von ihnen konnte mir bei meinem Problem helfen.Aktuelle aktive Benutzer ausdrucken. Php

Sie wissen nicht, ob das hilft, aber hier ist der Login-Code, wo ich einen Benutzer aus der Datenbank holen

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

ausführen Könnten Sie Code, der Informationen über den Chat gibt, veröffentlichen? Vor allem, wenn es mit einer Datenbank interagiert oder überwacht, wer gerade im Chatroom ist. – Naltroc

+0

'$ fail = false;' Beachten Sie, dass diese Zeile nie ausgeführt wird. –

+0

Beginnen Sie mit http://stackoverflow.com/questions/6431666/design-question-how-to-show-number-of-users-online –

Antwort

0

Id schlage vor, Sie ein Skript zu machen, die auf Anforderung an den Server alle 1-5 min senden update last_online DB-Feld. Dann, wenn Sie Benutzer von DB holen, fügen Sie Bedingung last_online weniger als 1-5 Minute von jetzt hinzu.

0

Erstens haben Sie einen Fehler in Ihrem Code. Sie setzen $fail to true und überprüfen dann if($fail) {...}. Dieser Code wird immer ausgeführt. Ich denke du willst es;

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

Soweit die aktiven Benutzer anzeigen, müssen Sie definieren, was aktiv bedeutet. Wenn Sie die letzte Login-Zeit von Benutzern aktualisieren, können Sie eine SQL-Abfrage wie "SELECT userName FROM users WHERE login_time > 'calculate xx minutes ago'"