session_cache_expire
Joachim
- php
Hallo,
weiss jemand ob session_cache_expire() geeignet ist, einen session timeout festzusetzen? Ich habe erfolglos mit dem php.net Beispiel rumgebastelt (Die Session bleibt einfach erhalten), und mache es "klassisch", indem ich die Auslaufzeit manuell neu setze und bei Ueberschreiten die Session beende.
Gruesse Joachim
Hallo,
weiss jemand ob session_cache_expire() geeignet ist, einen session timeout festzusetzen? Ich habe erfolglos mit dem php.net Beispiel rumgebastelt (Die Session bleibt einfach erhalten), und mache es "klassisch", indem ich die Auslaufzeit manuell neu setze und bei Ueberschreiten die Session beende.
Hi hab gestern selber noch session_cache_expire() benötigt, fand die Erklärung auch n bischen mager, wenn du die Comments zu dem session_cache_expire() liest, die in der php doku drin sind langts zum verstehen wofür session_cache_expire() gedacht ist...
habe es bei mir in 2 varianten gebraucht und es hat funktioniert:
1. Aufruf ohne Übergabeparameter: es liefert dir den Aktuellen Wert zurück ( in Minuten ) der besagt, wie lange es dauert bis die Session Ungültig ist. Und "nicht mehr zu gebrauchen" ist. D.h. aber nicht das sie zu diesem Zeipunkt von Garbage Collector schon aufgeräumt ist... Das kannst du noch mit ner weiteren Funktion beeinflussen...
2. Aufruf mit Übergabeparameter ( zb 30): Es wird der Timer für eine Session auf 30 Minuten gesetzt. Wenn du dieses Setzen nicht machst, gilt die Ablaufzeit die vom Server als Standard gesetzt ist. Die kannst mit phpinfo() finden. Wenn du die 30 min wartest ( zum testen kannst auch 5 oder 1 nehmen ;-) ) Und dann Auf die Session zugreifen willst bekommst du darauf kein Zugriff mehr, was bei mir zb die Folge hat, dass man aus dem internen Bereich rausfliegt und sich neu anmelden muss...
Fazit: mit session_cache_expire() kannst du sowohl die Zeit abfragen, als auch setzen und es funktioniert...
Gruesse Joachim
Grüße zurück Stefan
Hi,
Wenn du die 30 min wartest ( zum testen kannst auch 5 oder 1 nehmen ;-) ) Und dann Auf die Session zugreifen willst bekommst du darauf kein Zugriff mehr, was bei mir zb die Folge hat, dass man aus dem internen Bereich rausfliegt und sich neu anmelden muss...
hmm, genau das hatte ich getested, entsprechend dem Beispiel aus php.net. Ich konne aber die Auslaufzeit nicht veraendern:
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
session_cache_expire (1);
$cache_expire = session_cache_expire();
session_start();
$_SESSION["test"] = isset($_SESSION["test"])? $_SESSION["test"] : $HTTP_GET_VARS["test"];
echo "Die Cacheverwaltung ist jetzt auf $cache_limiter gesetzt<br>";
echo "Die Session wird für $cache_expire Minuten im Cache gespeichert<br>";
echo $_SESSION["test"];
Kann es sein, dass man die Berechtigung haben muss, die Server-Auslaufzeit zu ueberschreiben?
Gruesse Joachim
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
session_cache_expire (1);
$cache_expire = session_cache_expire();session_start();
hm denke du solltest mal die reihenfolge ändern
ich hab zb:
session_start();
session_cache_expire(90);
if (!session_is_registered("PKCSESSION"))
{
// if session check fehlgeschlagen ab zur loginseite
header("Location: ../frontend/login.php?e=1");
exit();
}
habe zuerst ne session gestartet
und dann bei ner laufenden session den expire gesetzt
du versuchst hingegen den expire einer session zu setzen und startest dann erst die session
mfg
Stefan