Tom: session.gc_maxlifetime geht nicht

Beitrag lesen

Hello,

Und wenn ich alles richtig verstanden habe kann man eine Session nicht nach einer bestimmmten Zeit löschen

Jein. Es ist so nicht vorgesehen. Natürlich kann man sich selber etwas basteln. Allerdings gibt es kein durchgängiges Modell, um alle Stellen zu erreichen, an denen man etwas tun müsste.

Wer entscheidet, ob die Session gelöscht wird?
Wer entscheidet, wann die Session gelöscht wird?
   Wie soll das getriggert werden?

Im Prinzip könnte man einen Cronjob auf die Sessiondatien ansetzen, der aller Minut schaut, ob die Lebensdauer schon abgelaufen ist. Davon bekommt aber der Client nichts mit und das von ihm angestoßene Script (Request) auch nicht. Das weiß nun nicht, warum die Sessiondatei nicht mehr da ist und würde, da ja die SessionID brav vom Client geliefert wurde, einfach eine neue Sessiondatei anlegen.

Und daran siehst Du auch, wo das Login vermerkt sein könnte: In der Sessiondatei. Da könntest Du einen pro Session individuellen Timestamp für "logged since", "last request" und eine universelle Zeit für "logout after x minutes of idle" eintragen.

Wenn der Client nun den nächsten Request schickt, prüfst Du erst, ob das noch "In Time" ist. Wenn ja, wird "last request" aktualisiert, sonst wird die Session gekillt. -> Leeren Cookie an den Client, session_destroy().

Das kann man alles in einer Funktion verpacken, die automatisch durch ein include am Anfang jedes Scriptes aufgerufen wird.

Session starten
Prüfen
Maßnahmen ergreifen

  • Anmeldung verlangen
  • Abmeldung miteilen
  • arbeiten lassen

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen