Sven Rautenberg: session.cookie_lifetime funktioniert nicht wie es soll

Beitrag lesen

Moin!

Ich möchte gerne meinen Login Bereich so gestalten, dass die Session nach einer gewissen inaktiven Zeit aufgelöst wird. Ich habe das in der php.ini testweise einmal so eingetragen:

ini_set("session.cookie_lifetime","5");

Es stehen interessante Kommentare zu den Session-Lebensdauern in folgenden Seiten:

http://de.php.net/manual/de/function.session-get-cookie-params.php
http://de.php.net/manual/de/function.session-set-cookie-params.php
http://de.php.net/manual/de/function.session-destroy.php

Quintessenz: Du kannst dich schlicht nicht darauf verlassen, dass die Session von PHP von allein beendet wird, sondern solltest eine eigene Zeitrechnung aufmachen. Also bei jedem Sessionzugriff einen Zeitstempel auf die aktuelle Zeit (time()) setzen,, wenn die aktuelle Zeit nicht schon mehr als X Minuten später ist, als der aktuelle Zeitstempel in der Session.

Wenn du das nicht prüfst, reicht es ja aus, PHP einfach die Session-ID als Cookie oder in der URL zu senden, und die Session geht weiter. Denn die Session-Daten werden nicht sofort bei Ablauf der Session gelöscht, sondern nach einem Zufallsprinzip bei (einstellbar) 1 bis 100% aller Zugriffe. Es werden deine alten Session-Daten also noch verfügbar sein - und PHP macht einfach dort weiter, wo die "alte" Session (eigentlich ja nicht wirklich) aufgehört hat.

- Sven Rautenberg

--
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|