Anzeige ob ein User Online ist
-
Moinsen Leute,
gleich zum Thema: wie realisiert man es dass angezeigt wird ob ein User online ist oder nicht? Ähnlich wie bei studivz, myspace, diesem ganzen Kram halt soll man den online-status sehen können, am besten in Echtzeit/Live.
Mit Datenbank? Oder kann man irgendwie schauen welche Session-Ids gerade aktiv sind und die dann benutzen?Besten Dank für beste Hilfe
Hartmut666
-
Hallo, mit Sessions kannst du das lösen. Eine User-Online anzeige like MySpace etc. erfordert auch eine User-Authentifizierung. Also wenn du sagen kannst der User ist eingeloggt, kannst du auch anzeigen das er Online ist. Eine Datenbank ist nicht Pflicht, wäre aber sinnvoll, alternativ gibt es noch die guten alten Text-Dateien. Aber mit einer DB ist das einfacher (meine Meinung).
-
soweit alles klar, nur is halt die frage wie man mitbekommt dass er offline ist. sollte sich der user ordnungsgemäß ausloggen alles gut mit DB aber was wenn er die session einfach ausklingen läßt?
-
Dann ist auch offline
Sowas könnte man mit AJAX lösen. Sowas ist aber etwas kompliziert. Wenn du nur den TAB schließt (im Browser) bleibt deine Session. Wenn der ganze Browser geschlossen wird, dann ist er laut Session richtig offline. Ich würde einfach den Zugriff von der IP beobachten, der erste der Weiß ob jemand "online" oder "offline" ist, ist der Webserver. Das wäre mein erster Ansatzpunkt. Aber ich denke das AJAX dann letztlich doch der Lösungsweg ist. Du musst mir JavaScript eigentlich lediglich abfangen wann er das Fenster mit der Seite schließt. Was an sich nur ein 3 Zeiler ist. Du kennst vielleicht solche nervigen Meldungen: "Sind Sie sicher, das Sie die Seite verlassen wollen" Bei klick auf OK einfach was kurzes zu DB schicken. Nur solltest du das ohne so eine Meldung machen.
FAZIT: Du musst das client seitig lösen. Oder Logfliles vom WebServer parsen.
so long
jd
-
Die meiste Websoftware schreibt nur den letzten Zugriff mit (braucht man keine Serverlogs wenn der Zugriff über Scripte erfolgt) und wenn der länger als X Minuten zurückliegt ist der Client offline
-
Das ist richtig, darthdespotism. Die von jd vorgeschlagene Lösung ist kaum pragmatisch, fehleranfällig, redundant und wird so (aus gutem Grund) nirgends praktiziert. Solche Dinge - Authentifizierung, Sessions etc. pp. - sind die Dinge, die gerade nicht clientseitig gelöst werden dürfen.
-
live wirst du das nicht hinbekommen. Es sei denn, du willst unnötig viel Leistung für ein derartiges Gimmick verschwenden.
Die übliche Vorgehensweise ist über die DB.
In der User-Tabelle wird geloggt, ob der User eingeloggt ist. Das kannst du entsprechend einfach zählen.
In einer zweiten Tabelle werden die Gäste geloggt (über die IP + Session-ID). Auch das kann man zählen.Bei einem Seitenaufruf (idealerweise, bevor du zu zählen anfängst) wird geprüft, ob von den gerade als Online gekennzeichneten Usern innerhalb einer bestimmten Zeitspanne (5-10 Minuten in etwa) eine Aktion erfolgte. Wenn nein, wird er als Offline markiert
Live würdest du es nur über Flash/Silverlight/Java hinbekommen. Selbst AJAX muss irgendwie wissen, wann es sich aktualisieren muss