Wert aus der DB löschen wenn die Seite verlassen wird.

ArFiBa

Erfahrenes Mitglied
Hallo Leute,

ich speichere die Session_ID eines jeden Besuchers beim anmelden zur weiteren Verwendung in der DB. Jetzt hab ich allerdings das Problem, dass wenn der User die Seite verlässt ohne sich vorher abzumelden, er beim nächsten mal immernoch angemeldet ist und auch die Session_ID noch in der DB ist. Allerdngs möchte ich es so haben, dass diese gelöscht wird wenn der User die Seite verlässt selbst wenn er sich vorher nicht abmeldet.

Geht das? Oder muss ich dafür meine halbe Seite umprogrammieren?
 
Das ist nicht möglich, da keine kontunuierliche Verbindung zwischen dem Server und Client besteht.
 
Du bekommst weder mit, dass der User sein Browserfenster schließt, noch dass der User in der Adressleiste eine fremde URL eingibt und Deine Seite verlässt, da der Browser keinen Request mehr sendet (er will ja nichts mehr von Deinem Server).
Es gibt zwei Möglichkeiten:
Du speicherst bei jedem eingeloggten Aufruf einer Seite auf Deinem Server die Uhrzeit und sagst einfach, wenn der User x Sekunden (oder Stunden) nicht erneut eine Seite auf Deinem Server angesurft hat, gilt er als ausgeloggt.
Oder Du kannst die Session-ID mit der Session-ID des Users abgleichen, für gewöhnlich wird die beim User gelöscht, sobald er den Browser schließt.

Gruß hpvw
 
Du kannst erstmal nicht feststellen, ob der User noch auf der Seite ist bzw. den Browser noch geöffnet hat.
Du kannst in einem bestimmten Intervall (z.B. 15 min) die SessionID aus der Datenbank löschen, wenn der Benutzer keine Aktion mehr gemacht hat.
Dazu musst du den Timestamp zusätzlich mit der SessionID in der DB speichern und ihn bei jeder Aktion des Users aktualisieren.
Dann sagst du einfach global: Wenn time() > Timestamp_DB + 15 min, dann Eintrag löschen.
 
Zurück