Seite 1 von 1

letzter besuch/gerade online?

Verfasst: 16.05.2006 14:50
von Jack9027
Hi,
weiß jemand wie man es überprüfen kann ob einUser gerade online ist oder wann er das letzte mal online war? Wenn sich der User einloggt ist es ja kein Problem in Datenbank zu schreiben, dass er online ist, aber wenn sich der User nicht ausloggt, sondern einfach die Seite schließt würde er ja immer online bleiben...
schonmal vielen Dank für eure Hilfe

Gruss
Jakob

Verfasst: 16.05.2006 15:20
von M0rGu3
Zauberwort Sessions ;)

Die Session wird automatisch beendet, wenn der Nutzer die Seite verlässt, auch wenn er den Browser schließt.
Das ließe sich also aus der phpbb_sessions-Table oder ähnlich generieren. Frag mich aber nicht wie, auf MySQL bin ich nicht ganz fit...
Schau dir doch mal die Dateien von phpBB an, da müsstest du fündig werden.

Verfasst: 16.05.2006 15:31
von Jack9027
Hey,
das ich des mit Sessions machen muss ist mit absolut klar, aber ich weiß nicht wie ich erkennen ob eine Session automatisch beendet worden ist oder nicht.

jo ich kenn die sessions.php von phpbb schon, aber da müsste ich mich erstmal ziemlich lang einarbeiten und ich will ja keinen fertigen code sondern einen ansatz wie sowas zu lösen ist

Verfasst: 16.05.2006 18:38
von S2B
Such mal in der sessions.php nach allen "DELETE FROM"-Queries. Vor den beiden "DELETE FROM phpbb_sessions"-Queries (einmal in session_end() und einmal in session_clean()) könntest du z.B. die Einträge auslesen und dann in die Benutzertabelle die aktuelle Zeit schreiben.

Verfasst: 16.05.2006 19:29
von Jack9027
Hi,
ne des is ja nicht für phpbb. Mich würd einfach intressieren wie man sowas allgemein macht ;)

Gruss
Jakob

Verfasst: 16.05.2006 21:34
von S2B
Jack9027 hat geschrieben:ne des is ja nicht für phpbb. Mich würd einfach intressieren wie man sowas allgemein macht ;)
Ähm, mit ein bisschen Fantasie sollte man das eigentlich "umschreiben" können...

Du musst regelmäßig alte Sessions aus der DB löschen. Bevor du die dann löschst, liest du alle aus und schreibst den "letzten Besuch"-Wert in deine Benutzertabelle in ein entsprechendes Feld.

Verfasst: 16.05.2006 21:52
von Jack9027
ok thx, also dann z.b alle 5 min per cronjob die alten session löschen, weil das projekt wird ein bisschen größer und dann is es doch von der performance mit cronjob her besser, als bei jedem seitenauruf oder?

Verfasst: 16.05.2006 21:58
von S2B
Jack9027 hat geschrieben:ok thx, also dann z.b alle 5 min per cronjob die alten session löschen, weil das projekt wird ein bisschen größer und dann is es doch von der performance mit cronjob her besser, als bei jedem seitenauruf oder?
Oder du baust dir deinen eigenen "Crobjob", z.B. indem du einen Timestamp in der DB speicherst und immer, nachdem ein bestimmtes Intervall verstrichen ist, die Sessions löschst. :wink:

Verfasst: 16.05.2006 22:11
von Jack9027
ok thx, aber des projekt läuft eh auf nem rootserver, dann mach ich des doch nicht so umstädnlich mit der datenbank ;)