mysql Eintrag zeitlich begrenzen?

guenter024

Erfahrenes Mitglied
Hallo PHP-Freunde,

stehe vor folgendem Problem:
Ich arbeite zur Zeit an einem Login, wo die session_id in der Datenbank beim User gespeichert und abgefragt wird. Somit ist der User eingeloggt, bis er sich ausloggt und somit die session_id wieder gelöscht wird.

Und genau hier ist das Problem, denn wenn der User sich nicht ausloggt, z.B. weil er es ganz einfach vergisst wird die session_id ja nicht gelöscht.

Wie kann ich hier vorgehen, bzw. kann ich einem Datenbankeintrag eine zeitlich begrenzte Gültigkeit zuweisen? Oder kann man den Eintrag irgendwie löschen, wenn die session_id des Users nicht mehr existiert?

Vielen Dank im Voraus für Eure Hilfe.

LG Günter



EDIT: oder meint Ihr reicht es aus, wenn ich die session_id in der SESSION speichere, z.B. mit
if (array_item($_SESSION, 'logged_in') == TRUE)) { ... }
 
Zuletzt bearbeitet:
Hallo du könntest ja ein timestamp mit in der Datenbank speichern und bei jedem seitenaufruf überprüfen ob das Timestamp älter als z.B. eine viertel Stunde ist. Falls nein das aktuelle timestamp in die Datenbank schreiben und falls ja den Datenbankeintrag inkl. deiner session löschen.
Ich hoffe das ist das was du meinst.
 
Hallo,

danke für deine Antwort. Ich schematisiere das nochmal um sicherzugehen (soll jetzt kein code sein):

Wenn User Login
-> Eintrag in Datenbank ( session_id , Timestamp )

Wenn User Seitenaufruf
& Abfrage (session_id, Timestamp < 15min.)
-> ok

Wenn User Seitenaufruf
& Abfrage (session_id, Timestamp > 15 min.)
-> delete session_id und User Login erforderlich

Muss ich mal ausprobieren...
Nochmal zur Zeit ab dem letzten Timestamp:
Ist 15 min. ein üblicher Wert?
 
Also ich würde es nur über Sessions machen. Hat den großen Vorteil du hast 1 Datenbankabfrage weniger. Du kannst den Timestamp auch in der Session speichern, und ihn dort nach dem Verfahren, dass du schon beschrieben hast, prüfen.
 
Guten Morgen, da hab ich gleich nochmal eine Frage:

bei einer reinen Loginspeicherung mit SESSION wäre ja auch einVorteil, dass der User nach dem Verlassen der Seite automatisch ausgeloggt wird.
Braucht man hier überhaupt noch den Timestamp?
 
Nein, das kommt ganz drauf an wie du es nachher abfragst. Und auf was für einen TimeOut, die Sessions in deiner PHP.ini eingestellt sind. Mach es lieber mit Timestamp, dann bist du auf der sicheren Seite. Außerdem weisst du dann genau was du machst :).
Es ist egal ob der User den Browser schließt oder die Seite auflässt und nichts macht. Es kommt nur drauf an, wann der Browser das Cookie in dem die Session steht, löscht. Du kannst dem Cookie zwar eine Timeout mitgeben, wann es von Browser gelöscht werden soll. Aber bei solchen Aktionen, musst du dann hoffen, dass der Browser das von dem entsprechenden User auch macht. Darüber hast leider keinerlei Kontrolle.

Der Server weiss eh nichts mehr von dem User, nachdem er die Seiten "an ihm geschickt hat". Da HTTP eine Synchrones Protokoll ist, um dies zu umgehen, gibt es die Sessions :)
 
Zurück