session->wann abgelaufen?
romy
- php
0 Christoph0 romy
0 Andreas Korthaus0 romy0 Andreas Korthaus0 romy
Hi,
kann mein Script erkennen ob eine session abgelaufen ist? Wenn ja wie könnte ich das lösen.
Habe nur die Funktion session_cache_expire() gefunden, welche mir in meinem Falle 180 liefert und ich weiss nicht so richtig was ich damit anfangen soll. (180 Min bzw. 180 Sek. ist beides Quatsch->ansonsten könnte ich mir ja die Initialisierungszeit merken und dann immer vergleichen)
Wer weiss Rat?
ciao\nromy
Hi romy
kann mein Script erkennen ob eine session abgelaufen ist? Wenn ja wie könnte ich das lösen.
leider kenn ich dein Script ja nicht :/
Aber warum schreibst du keine Funktion, die nach soundsoviel Minuten oder Stunden die Session ablaufen lässt? Dann weisst du es genau!
Gruß Christoph
Hi,
leider kenn ich dein Script ja nicht :/
das wäre glaube ich ein bisschen viel :)
es geht ja nur um das session-handling an sich
Aber warum schreibst du keine Funktion, die nach soundsoviel Minuten oder Stunden die Session ablaufen lässt? Dann weisst du es genau!
da hast Du Recht, aber ich benutze ja nun mal die vorgefertigten Session-Funktionen, ich dachte da gibt es auch einen Weg.
Ich bin auch erst kürzlich auf das Problem gestossen, da ich gemerkt habe, dass wenn die session abläuft, logischerweise alle Angaben falsch sind, die darauf beruhen. Ich würde dies halt gern vorher abfangen. (beim Neuladen zB.)
Du könntest natürlich Recht haben, dass es vielleicht gar nichts damit zu tun hat, aber ich habe grosse Schwiergkeiten das Problem näher zu beschreiben.
Fest steht, solange die session läuft geht alles klar, klicke ich auf einen link oder reloade die seite, wenn die session expired ist, das kommt viel Müll raus!?
ciao
romy
Hi!
kann mein Script erkennen ob eine session abgelaufen ist? Wenn ja wie könnte ich das lösen.
Habe nur die Funktion session_cache_expire() gefunden, welche mir in meinem Falle 180 liefert und ich weiss nicht so richtig was ich damit anfangen soll. (180 Min bzw. 180 Sek. ist beides Quatsch->ansonsten könnte ich mir ja die Initialisierungszeit merken und dann immer vergleichen)
Wer weiss Rat?
Das Manual! Da steht zu obiger Funktion:
"session_cache_expire() gibt die aktuelle Einstellung von session.cache_expire zurück. Der zurückgegebene Wert wird in Minuten angegeben und ist standardmäßig auf 180 gesetzt."
Und da steht auch:
"Die Cache-Verfallszeit wird zu Beginn einer Anfrage auf den standardmäßigen Wert von 180, der in session.cache_limiter gespeichert ist, zurück gesetzt"
Es gibt verschiedene Möglichkeiten zu erfahren ob eine Session besteht.
1. könntest Du _vor_ session_start() prüfen, ob im session_save_path() eine Datei mit dem Namen $_REQUEST[session_name()] existiert. Wenn die existiert gibt besteht(oder bestand) eine Session, wenn nicht besteht keine. Wobei es hier glaube ich vorkommen könnte, dass die Session bei Session_start() überschrieben wird, wenn die cache-zeit überschritten wurde, habe das aber noch nie ausprobiert.
der 2. und IMHO bessere Weg ist es, irgendeinen Wert am Anfang in die Session zu schreiben, und danach immer einfach mit if($_SESSION['irgendein_name']=='irgendein_wert') prüfen ob der gesetzt ist. Dann weißt Du definitiv ob die Session schon exisitierte.
Grüße
Andreas
Hi,
der 2. und IMHO bessere Weg ist es, irgendeinen Wert am Anfang in die Session zu schreiben, und danach immer einfach mit if($_SESSION['irgendein_name']=='irgendein_wert') prüfen ob der gesetzt ist. Dann weißt Du definitiv ob die Session schon exisitierte.
Also wenn man dies so machen kann, liegt der Fehler an einer anderen Stelle:
Es ist sehr komisch. Ich frage ja eh eine der Variablen ab, da dürfte dieses Problem gar nicht auftreten.
Naja ich geh mal suchen...(Heunadel im Steckhaufen) ;)
vielen Dank
ciao
romy
Hi!
Also wenn man dies so machen kann, liegt der Fehler an einer anderen Stelle:
Es ist sehr komisch. Ich frage ja eh eine der Variablen ab, da dürfte dieses Problem gar nicht auftreten.
Naja ich geh mal suchen...(Heunadel im Steckhaufen) ;)
Du musst beachten dass man abfragt _bevor_ was neues geschrieben wird, das ist ein beliebter Fehler ;-)
Ich würde es glaube ich so machen:
<?php
session_start();
if(!$_SESSION) {
header('http://server.tld/zurück_zum_start...');
exit;
}
// hier das was Du eigentlich machen wolltest
?>
Hierdurch wird der User bei einer leeren Session zurückgeschickt.
Grüße
Andreas
Hi,
<?php
session_start();
if(!$_SESSION) {
header('http://server.tld/zurück_zum_start...');
exit;
}
// hier das was Du eigentlich machen wolltest
danke, so geht es sehr gut
ciao
romy