Sven Rautenberg: Session nach n Sec/Min/Std automatisch ungültig machen

Beitrag lesen

Moin!

wie kann man das machen, das eine SessionID automatisch ungültig wird nach einer bestimmten Zeit? Also wenn ich mich heute z.B. "example.com/foo.php?PHPSESSID=af64fd564b..." aufrufe, dann kommt meinetwegen "Text blah irgendwas...". Und wenn ich beispielsweise diese URI nach 20 Minuten wieder aufrufe (ohne in der zwischenzeit aktiv gewesen zu sein!) der Text kommt "Bitte loggen sie sich erneut ein... SESSION ungültig...blah" und eine neue SESSION generiert wird? ...Geht das überhaupt? Wenn ja, wie ist das mit den Session-Dateien auf dem Server meines Providers, wann werden die wieder gelöscht? ...

Wenn du in der Session als Information jeweils die aktuelle Zeit speicherst, und beim Beginn jeder Seite vorher prüfst, ob die gespeicherte Zeit schon mehr als die maximal erlaubte Inaktivitätsdauer zurückliegt, kannst du die Meldung "Neu einloggen" bringen:

if ($_SESSION['last_active'] älter als 20 Minuten)
{
  echo "Neu einloggen bitte";
}
else
{
  $_SESSION['last_active'] = jetztzeit()
}

Zum echte Funktionen rausfummeln hab' ich gerade keine Lust. :)

Außerdem solltest du noch prüfen, ob die Session überhaupt schon existierte. Wenn nicht, dann kann $_SESSION['last_active'] natürlich auch nicht existieren, und man sollte sich dann auch neu (bzw. überhaupt erstmal) einloggen.

Der Session-Expires-Mechanismus von PHP könnte auch helfen, aber wer weiß, ob du den verändern kannst - ich müßte genau wie du bei http://www.php.net nachgucken, wie das ginge. Mit Pech geht das nur global für alle Nutzer in der php.ini.

- Sven Rautenberg

--
Ein glückliches und erfolgreiches Jahr 2003 wünsche ich!