Session

zmedia

Angesehenes Mitglied
Habe da einmal eine Frage.

Mein Loginscript trägt die Session in eine Usertabelle MYSQl ein.
Beim Logout wird diese Variable wieder auf Null gesetzt (gelöscht).

Wenn der User sich aber statt ausloggen den Browser einfach schliesst wird diese Session ID nicht von der Usertabelle ausgetragen.

Gibt es eine Möglichkeit, wie ich das löschen auch bei schliessen ausführen kann?

Denn um anderen User die Möglichkeit zu bieten, anzuzeigen wer Online ist, müsste ich 100% sicher sein ober der User an oder abgemeldet ist.

Oder wie macht Ihr das in Foren und Communityseiten?

Thx René
 
naja die sesssion wird sicher auch nicht gelöscht wenn sich der User nicht ausloggt und stat dessen einfach nur eine andere URL aufruft...

wenn die loginseiten alle in einem Frage geladen werden, könntest Du mit onUnload (Javascript) eine Funktion aufrufen die die Session löscht.

ansonsten würde ich es einfach so machen zu der aktuellen Session auch die Zeit einzutragen, und dann eine generelle Funktion zu erstellen die alle sessions löscht die in älter als XXX sind...
 
@ Florian
QUOTE Also ich bin der Meinung das die Session-ID nach einer bestimmten Zeit abläuft und gelöscht wird.


Die Session wird, wenn keine Zeit angegeben ist, nur beim Browser schliessen gelöscht (Clientseitig), aber nicht aus der MYSQL Tabelle (Serverseitig)

Danke für die Links, leider am Ziel vorbei geschossen, ich habe keine generellen Probleme mit session!!!!

Ich möchte nur wissen, wie und ob ich den Eintrag aus der Tabelle löschen kann, wenn das Fenster geschlossen wird.

@Metaman

Da ich ein Browser ohne Adressleiste verwende, ist die möglichkeit der neuen Url unterbunden.


QUOTE wenn die loginseiten alle in einem Frage geladen werden, könntest Du mit onUnload (Javascript) eine Funktion aufrufen die die Session löscht.


Und wolltest wohl Frame nicht Frage schreiben ;-)
Ja, das habe ich, aber wo gebe ich den Befehl onUnload ein? Wird es auch abgearbeitet wenn es im body tag steht und er Browser geschlossen wird?


QUOTE
ansonsten würde ich es einfach so machen zu der aktuellen Session auch die Zeit einzutragen, und dann eine generelle Funktion zu erstellen die alle sessions löscht die in älter als XXX sind...

Da ich ein logfile führe, wäre das mit der Zeit machbar. Aber wo soll diese Funktion ausgeführt werden, beim jeweiligen Login?

Gruss René
 
jepp sollte Frame heißen..
also dieses onUnload ist eine Javascript Funktion die direkt im body Tag definiert wird.
infos dazu z.b. auf
http://de.selfhtml.org/javascript/sprache/...er.htm#onunload

das mit dem Browser ohne Adressleiste würde ich nich so laut sagen.
denn wenn ich dich richtig verstanden hab ist es ein Script wo sich verschieden User einloggen können.
und da kann man nicht immer alles Festlegen.
Beispielsweise wenn ich mit meinen Firefox Browser auf eine Seite komme die ein neues Fenster öffnet wo Status oder Adressleiste ausgeblendet wird, dann öffnet mein FF zwar eine Art Fenster aber dieses hat auch Adressleiste und anderes..

zur Zeitfunktion...
da würde ich diese Prüfung nicht nur einmal machen.!!!
ich würde es so machen.
beim Login wird die session, die ip und die loginzeit(timestamp) in der DB gespeichert
bei jedem weiteren Aufruf einer internen Seite wird nun geprüft ob die aktuelle session in der DB vorhanden ist und auch ob die IP passt und dabei dann gleich die Zeit geändert.
somit weißt Du immer genau wann der User die letzte Aktion getätigt hat.
gleichzeit kann dann in dieser Prüfung die Löschfunktion eingebaut werden die alle alten Session löscht...
Dabei würde ich die Zeitdauer auf max. 5 Minuten festlegen
Das heißt dann auch das ein User der beim Betrachten einer Seite eingeschlafen ist nach 5 Minuten automatisch ausgeloggt wird.

Damit hast du dann gleich auch eine gute User Online Anzeige da Du ja nur die aktuellen Session zählen brauchst..
 
THX Metaman

Nein, dass mit der Adresszeile stellt keine Probleme dar. Funktioniert in IE FF Mozilla Opera , die Adressleiste wird nie angezeigt. Zudem arbeite ich im Userbereich mit einer Frameseite (pop-up), welche nur einmal beim Login geladen wird, später wird der Content in die einzelnen Frames verteilt.

JavaScript ist mir schon bekannt wie einbinden, aber danke für den Link zur richtigen Funktion. Jedoch denke ich an die User welche JS ausgeschaltet haben, aus diesem Grund finde ich die php Version eleganter!

5 Min. finde ich persönlich etwas wenig für ein CMS, aber die richtung ist OK.
Auch wenn wieder eine abfrage zusätzlich aufgerufen und so die geschwindikeit leicht drosselt.

Schöne Grüsse René
 
Zurück
Oben