Seite 1 von 1
Online/Offline - Ausgabe ?
Verfasst: 09.12.2009 18:26
von Bones van Helghast
Gibt es eine Möglichkeit dass ich per SQL und PHP wenn ich mich auf einen bestimmten Teil der Homepage von mir einlogge auf der Startseite als Online (Grünes Grafik-Bildchen) angezeigt werde wenn ich dann den Browser schließe oder auf Logout klicke soll das Grafik-Bildchen rot werden...
Der Login ist schon erstellt und läuft auch mit ner SQL-Datenbank aber ich weiß nicht wie ich das mit dem Online/Offline machen soll...
Re: Online/Offline - Ausgabe ?
Verfasst: 09.12.2009 18:31
von Pyramide
Code: Alles auswählen
$user_is_online = ...; //prüfen, ob Benutzer online ist
if($user_is_online) {
print '<img src="gruen.png">';
}
else {
print '<img src="rot.png">';
}
Re: Online/Offline - Ausgabe ?
Verfasst: 15.12.2009 12:24
von Bones van Helghast
Ja nein danke erst mal dass du mir hilfst.
Das hab ich schon gewusst nur ich meinte das Problem dass es in der DB gespeichert wird dass ich online/offline bin.
d.H wenn ich auf "Absenden" drücke und vorher passwort + benutzername eingegeben hab dann soll in der db genau bei dem nutzername auch online auf 1 stehen oder auf yes oder was weiß ich was es da gibt.
und anderst rum natürlich auch wenn ich dann auf logout geh also die sesson beende soll wieder auf 0 gehen oder auf no
Re: Online/Offline - Ausgabe ?
Verfasst: 16.12.2009 08:10
von gn#36
Naja wie hältst du denn fest ob jemand angemeldet ist oder nicht? Das musst du doch sowieso nachhalten. Schreib doch einfach einen Eintrag in die Datenbank wo du den Timestamp bei jeder Aktivität aktualisierst und wenn dann jemand auf ausloggen klickt oder wenn der Eintrag zu alt wird (also keine Aktivität stattfand) dann wird der Eintrag entfernt und der User gilt als Offline.
Re: Online/Offline - Ausgabe ?
Verfasst: 16.12.2009 20:25
von AmShaegar
Bones van Helghast hat geschrieben:...dann soll in der db genau bei dem nutzername auch online auf 1 stehen oder auf yes oder was weiß ich was es da gibt.
und anderst rum natürlich auch wenn ich dann auf logout geh also die sesson beende soll wieder auf 0 gehen oder auf no
Das ist der falsche Ansatz. Wenn du den Browser schließt, dann wird ja nichts mehr an die Datenbank gesendet. Das heißt, du musst sicherstellen, dass es genügt, beim letzten Seitenaufruf einen Datenbankeintrag zu erzeugen.
Das stellst du, wie schon von gn#36 erwähnt, an: Statt deiner 1 oder 0 speicherst du bei jedem Seitenaufruf den aktuellen Timestamp in der Datenbank. Dann kannst du bei deinem "Online"-Button abfragen, ob der Timestamp älter als zum Beispiel 5min ist. Wenn ja, dann ist der Benutzer eben Offline. Beim Logout kannst du den Timestamp auf 0 setzen, dann ist er definitiv älter, oder du speicherst das nochmal extra, dann kannst du beim nächsten Login, bevor du den neuen Timestamp einträgst noch ausgeben, wann man zuletzt eingeloggt war.
Code: Alles auswählen
if($user_timestamp > time()-5*60) {
echo "Online";
} else {
echo "Offline";
Keine Garantie auf Richtigkeit, hab seit nem halben Jahr nix mehr in PHP geschrieben.