User-Online-Status anzeigen (Login-Script)
Erri
- programmiertechnik
0 Daniel0 Tobias Kloth
0 LeKuchen
Hallo,
ich habe eine Frage (eher eine Verständnisfrage) bzgl. einem Session-Login-System und dem Anzeigen der User-Online-Status.
Die Vorgehensweise:
Wenn sich ein User einloggt, wird eine Session registriert und in die Userdatenbank wird des Weiteren für diesen User der „status = online“ geschrieben. Mit diesem Status möchte ich auf der Website anzeigen, welche User online sind.
Mein Problem ist nun: Vergisst der User den „Logout“, wird zwar die Session beendet, aber der Status des Users bleibt auf „online“, auch wenn er schon lange nicht mehr online ist.
Meine Idee war nun:
Mit einem Cronjob regelmäßig die Online-Status aller User auf „offline“ setzen.
Dabei ist wiederum das Problem, dass ich hierbei auch alle User erwische, welche derzeit wirklich online sind.
Nun wird wahrscheinlich jemand sagen, dass ich ja bei jedem Aufruf einer Seite den Status wieder neu setzen kann, oder dass ich das Cronjob-Script mit einem Timestamp versehe...
So richtig gefällt mir diese Lösung allerdings nicht.
Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?
Vielen Dank im Voraus
Erri
Ahoi Erri,
So richtig gefällt mir diese Lösung allerdings nicht.
Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?
also ich würde sagen das du in der DB sowohl status=online als auch
letzte_aktion = timestamp speicherst, letzteres aktuallisierst du, ruft
nun jmd "Welche User sind online" auf kannst du auch gleich noch mit
angeben wann sie das letztemal etwas getan haben (evt. auch wenn du es
mitspeicherst welche seite sie zuletzt aufgerufen haben) und wenn dies
schon so und so lange her ist dann machst du status = offline ganz ohne
cronjob. Aber ohne timestamp geht da wohl nix.
MfG
Hallo Erri,
Hat eventuell jemand von euch Ideen?
Lies mal http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm.
Grüße aus Nürnberg
Tobias
Hallo Erri,
So richtig gefällt mir diese Lösung allerdings nicht.
Hat eventuell jemand von euch Ideen? Wie wird es zum Beispiel bei Foren gehandhabt?
Mal aus der Perspektive eines Windozers (Du hast ja nicht gesagt, welcher Sprachen Du Dich bedienst):
Bei ASP.NET kann man die Sessionverwaltung direkt dem SQL-Server überlassen. Man setzt in einer Config-Datei (XML) einen sessionState mode und gibt die dsn des SQL-Servers an. (Ausserdem noch die Angaben möglich: Cookieless=true/false wg. disabled Javascript und Timeout.)
Der SQL-Server verwaltet dann die offenen Sessions automatisch in einer Tabelle, inkl. Timeout der einzelnen Sessions. Einfache Abfrage auf die Tabelle und schon hat man die User online, natürlich inklusive der timeout-Kandidaten.
So einfach kann es sein... ;o)
Gruss
LeKuchen