2017-02-07 5 views
0

Ich habe 10 Seiten und Benutzer-Datenbank.PHP> Cookies lesen Online-Benutzer (Online-Benutzer)

Im Index frage ich den Benutzer, wählen Sie seinen Namen aus dem Dropdown-Menü, dann speichere ich den Wert als Cookies.

Mein Ziel ist es, auf jeder Seite zu zeigen, wer online ist.

Meine aktuelle Methode zeigt nur einen Benutzer an, . Beispiel: Wenn Benutzer A seinen Namen auswählt, wird nur sein Name angezeigt, wer auf dieser Seite online ist.

Ich muss allen Benutzern zeigen

irgendwelche Ideen?

Mein Code

 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 { 


     } 
+0

Gibt es einen Code, den Sie bereits ausprobiert haben? – Jer

+0

Zeig uns, was du versucht hast. So wie es ist, ist diese Frage zu weit. BTW, warum muss der Benutzer den eigenen Namen des Benutzers auswählen? Sollten Sie das nicht für den Benutzer tun? –

+0

@MagnusEriksson, ich habe meinen Code jetzt hinzugefügt und derzeit habe ich keine Login-Funktion, um die Dinge schneller zu machen. – marvillous

Antwort

0

Sie können eine neue Spalte in Ihrer Benutzertabelle lastaction hinzufügen. Diese Spalte wird jedes Mal aktualisiert, wenn der Benutzer auf Ihre Website navigiert. In diesem Beispiel werden wir alle Benutzer anzeigen, die die letzten 5 Minuten 'online' waren.

Dann können Sie das Intervall DATE_SUB() mit einer Abfrage ähnlich wie diese:

SELECT username FROM table WHERE lastaction > DATE_SUB(NOW(), INTERVAL 5 MINUTE) WHERE userid='2' 

Beispiel in 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>'; 
} 
?> 

Und dann die lastaction aktualisieren, wenn der Benutzer F5 oder etwas trifft.

$mysqli->query("UPDATE lastonline = NOW() WHERE userid='2'"); 

Ich hoffe, das wird Ihnen helfen!

Hinweis: Sie müssen diesen Code auf Ihren eigenen aktualisieren, da dies als Beispiel geschrieben wird.

+0

Dank dieser Ideen arbeitet mit mir, ich habe die Seite ID und Aktionszeit DB hinzugefügt und meine Methode funktioniert jetzt :) – marvillous

+0

@marvillous Froh, es hat funktioniert :) – Jer

0

einen Zeitstempel zu Ihrer Benutzertabelle hinzufügen und es auf jeder Anfrage aktualisieren. Jetzt können Sie alle Benutzer abfragen und anzeigen, die in den letzten X Sekunden/Minuten eine Seite angefordert haben.

Verwandte Themen