Sessions: Time-Out Funktion realisieren?
dave
- php
Hallo,
in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.
Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.
Grüsse
Dave
in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.
Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.
Machst ne Session-Variable $timeout.
Schreibst Du den Timeout-Zeitpunkt rein.
Vergleichst Du auf jeder Seite den Inhalt von $timeout mit der aktuellen Zeit; wenn kleiner, killst Du die Session.
Für einen Idle-Timeout (N Minuten ohne Seitenaufruf) packst Du stattdessen "jetzt + 5 Minuten" rein und vergleichst das auf jeder Seite mit der aktuellen Zeit; wenn kleiner, killst Du die Session, wenn größer, setzt Du sie wieder neu auf "jetzt + 5 Minuten".
Hallo,
in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.
Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.
Grüsse
Dave
Hi,
Welche Möglichkeiten hast Du denn? Kommst Du an die php.ini ran?
Normalerweise gibt es ein eingebautes Session-Timeout in PHP. Die entsprechenden Parts aus der INI-Datei sehen in etwa so aus:
[Session]
session.save_handler = files
session.save_path = H:/sessions
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0 ; Hier entsprechendes eintragen
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 1
Der Ausschnitt stammt aus einer bearbeiteten INI und es kann Sein, das Deine Einstellungen davon abwechen. Wichtig wäre zunächst mal die markierte Zeile.
Ich hoffe, das Dir das weiterhilft.
gruß
Axel
Hi,
Ergänzung:
[Session]
session.save_handler = files
session.save_path = H:/sessions
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0 ; Hier entsprechendes eintragen
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440 ; Hier natürlich auch - sorry.
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180 ; Und hier...
session.use_trans_sid = 1
gruß
Axel
Moin!
Und wenn Du nicht an die php.ini kannst, könnte Dir folgende Funktion helfen: http://www.php.net/manual/de/function.ini-set.php, hiermit kannst Du für die Laufzeit eines Scriptes Einstellungen der php.ini überschreiben.
Wenn PHP als Apache-Modul installiert ist geht es außerdem noch über htaccess.
Wobei Mulders Lösung vollkommen reicht - wäre ich nie drauf gekommen... gute Idee!
;-)
Grüße
Andreas