Gültigkeitsdauer bei Sessions festlegen?!
Hendrik
- php
Hey!
Wie kann man bei einer Session die Gültigkeitsdauer festlegen?
Ich denke ja eigentlich irgendwas mit setcookie() und time(), weiß aber nichts genaues? Wie sähe eine Cookieinitialisierung mit Festlegung der Gültigkeitsdauer aus?
Vielen Dank für eure Mühen!
Hendrik
Hey..
Lies dir mal bitte das alles durhc und die weiterführenden Links.
http://selfphp.de/praxisbuch/praxisbuch.php?group=34
mfg
Phil Z.
Hallo Hendrik,
Wie kann man bei einer Session die Gültigkeitsdauer festlegen?
Da gibt's zwei Einstellungen:
Wann der Garbage Collektor von PHP die Session als ungültig betrachtet, d.h. ab wie viel Sekunden seit dem letzten Zugriff eine Session komplett gelöscht werden soll. Danach kann jemand zwar noch die gleiche Session-ID verwenden, allerdings wird dann eine neue Session gestartet, da die alte Session weg ist. Die Einstellung heißt session.gc_maxlifetime und Du kannst sie mittels ini_set('session.gc_maxlifetime', $AnzahlSekunden);
setzen.
Wie lange der Session-Cookie gültig ist. Die Einstellung ist unabhängig von der obigen, da Session-IDs ja nicht ausschließlich über Cookies übertragen werden können, und die Angabe der Gültigkeitsdauer des Cookies sowieso nur eine Empfehlung für den Browser ist, der Browser sich aber nicht unbedingt daran zu halten braucht. Die Einstellung kannst Du mittels session_set_cookie_params() ändern. Eine Gültigkeitsdauer von 0 heißt, der Cookie bleibt bis zum Ende der Browsersitzung gültig, ansonsten ist dort die Anzahl der Sekunden einzutragen, die der Cookie gültig bleiben soll. Mit der Funktion können ferner noch einige andere Cookie-Einstellungen modifiziert werden, siehe dazu die Funktion setcookie() für eine Erklärung.
Wichtig ist: Alle Einstellungen müssen *VOR* session_start() vorgenommen werden, ansonsten funktioniert das ganze nicht oder nicht richtig.
Viele Grüße,
Christian
Hey!
Wie kann man bei einer Session die Gültigkeitsdauer festlegen?
Da gibt's zwei Einstellungen:
Wann der Garbage Collektor von PHP die Session als ungültig betrachtet, d.h. ab wie viel Sekunden seit dem letzten Zugriff eine Session komplett gelöscht werden soll. Danach kann jemand zwar noch die gleiche Session-ID verwenden, allerdings wird dann eine neue Session gestartet, da die alte Session weg ist. Die Einstellung heißt session.gc_maxlifetime und Du kannst sie mittels
ini_set('session.gc_maxlifetime', $AnzahlSekunden);
setzen.Wie lange der Session-Cookie gültig ist. Die Einstellung ist unabhängig von der obigen, da Session-IDs ja nicht ausschließlich über Cookies übertragen werden können, und die Angabe der Gültigkeitsdauer des Cookies sowieso nur eine Empfehlung für den Browser ist, der Browser sich aber nicht unbedingt daran zu halten braucht. Die Einstellung kannst Du mittels session_set_cookie_params() ändern. Eine Gültigkeitsdauer von 0 heißt, der Cookie bleibt bis zum Ende der Browsersitzung gültig, ansonsten ist dort die Anzahl der Sekunden einzutragen, die der Cookie gültig bleiben soll. Mit der Funktion können ferner noch einige andere Cookie-Einstellungen modifiziert werden, siehe dazu die Funktion setcookie() für eine Erklärung.
Wichtig ist: Alle Einstellungen müssen *VOR* session_start() vorgenommen werden, ansonsten funktioniert das ganze nicht oder nicht richtig.
Vielen Dank für diese lange, tolle Antwort! Ich denke, damit hast du mir sehr weitergeholfen!
Hendrik
Wichtig ist: Alle Einstellungen müssen *VOR* session_start() vorgenommen werden, ansonsten funktioniert das ganze nicht oder nicht richtig.
Vielen Dank für diese lange, tolle Antwort! Ich denke, damit hast du mir sehr weitergeholfen!
Nabend,
bevor du die nächsten Stunden wie der Ochs vorm Berg stehst und nicht weiter weisst, hier noch ein Hinweis von mir.
Alle diese Anweisungen funktioniern zwar, aber nur, wenn du den Speicherpfad der Sessions ebenfalls änderst (session.save_path), so dass sie nicht mehr im Standard-Pfad abgelegt werden.
Hintergrund ist, dass die Sessiondateien keine Informationen enthalten mit welcher Lebenszeit und Einstellungen sie erstellt wurden. Und wenn jetzt irgendein anderes Script auf deinem Server auch eine Session erstellt, aber mit anderer Laufzeit, dann werden _alle_ Sessions auf dem Server die diese Zeit überschritten haben gelöscht, egal ob sie nun von diesem Script oder einem anderen stammen.
Daher, für seperate Session-Einstellungen am besten immer eigene Ordner verwenden.
Die PHP Konfiguration der Sessions lässt sich übrigens auch bequem ausserhalb der Scripte mit einer .htaccess und der Anweisung "php_admin_value" erledigen - google da einfach mal :)
greetz RFZ