Krain Geschrieben 9. August 2004 Geschrieben 9. August 2004 Mein Session-Code lautet folgendermassen! session_start(); echo session_id(); if(session_is_registered("time")) { $curtime = time(); if($curtime-$_SESSION[time] > 20) { session_destroy(); if(session_id()) { echo "Session_id noch vorhanden!"; } else echo "keine Session_id mehr vorhanden!$PHPSESSID"; die("Ihre Session ist abgelaufen!<a href='tip.php'>weiter</a>"); } else { echo $curtime-$_SESSION[time]; $time = time(); } } else { $time=time(); } session_register("time"); [/PHP] Hierbei gibt er mir nach 20 Sekunden aus (nach drücken F5): [code] fd486e9c6de93922bf64f6e0b97c4820 keine Session_id mehr vorhanden! fd486e9c6de93922bf64f6e0b97c4820 Ihre Session ist abgelaufen!weiter[/code] Das darf doch eigentlich nicht sein, oder? Kann mir jemand helfen? Ich bräuchte das dringend! Zitieren
geloescht_JesterDay Geschrieben 9. August 2004 Geschrieben 9. August 2004 1. session_is_registerd würde is als if isset($_SESSION["time"]) schreiben. 2. wie du gesehen hast nicht $_SESSION[time] sondern: $_SESSION["time"] 3. $_SESSION["time"] = $time Das sind so die sachen die mir aufgefallen sind. Das würde ich anders machen... probiers mal ob es so geht. Zitieren
Krain Geschrieben 9. August 2004 Autor Geschrieben 9. August 2004 zu 1. Das macht doch beides genau das gleiche! zu 2. $_SESSION[time] funktioniert so - probier es aus! zu 3. $time = time(); session_register("time"); [/PHP] Dieses Statement funktioniert ebenfalls - Probiers mal! Das löst allerdings immer noch nicht mein Problem, dass ich nach einem session_destroy immer noch die gleiche session_id habe! Nach einem [session_destroy - session_start] - Ablauf muss doch eine neue session_id kreiert werden!? Zitieren
geloescht_JesterDay Geschrieben 9. August 2004 Geschrieben 9. August 2004 zu 1. Das macht doch beides genau das gleiche! zu 2. $_SESSION[time] funktioniert so - probier es aus! zu 3. $time = time(); session_register("time"); [/PHP] Dieses Statement funktioniert ebenfalls - Probiers mal! Das löst allerdings immer noch nicht mein Problem, dass ich nach einem session_destroy immer noch die gleiche session_id habe! Nach einem [session_destroy - session_start] - Ablauf muss doch eine neue session_id kreiert werden!? Ja, das zweite funktioniert genauso... ist aber die "alte" Version. If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled. [...ausserdem:] Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. [/Quote] und auch hier (http://de2.php.net/manual/en/ref.session.php) wird in den Beispielen $_SESSION['count'] genutzt. EDIT: [PHP] <?PHP if(session_start())echo"Session wurde erstellt!"; echo "<br>"; if(session_id())echo session_id(); echo "<br>"; session_destroy(); if(!session_id())echo "Session-ID wurde zerstört"; if(session_start())echo"Session wurde erstellt!"; echo "<br>"; if(session_id())echo session_id(); echo "<br>"; session_destroy(); if(!session_id())echo "Session-ID wurde zerstört"; ?> Das ist ein Beispiel aus SelfPHP (nur 2 mal hier). Geht das? Nochne Anmerkung: Mir session_unset() kannst du alle variablen in der aktuellen Session löschen, damit würde auch dieselbe Session_id nix mehr nützen, so als Workaraound. Noch ein Edit: PHP löscht die Sessiondata nicht sofort beim session_destroy(). also im session Pfad die Datei in der die Inhalte der Sessionvariablen gespeichert sind. Die werden je nach Einstellung der PHP.ini ab und zu mal beim Aufruf von session_start() gelöscht. Sprich, wenn der Cookie der session noch da ist, und du nicht sehr viel Glück hast (ich glaub standard ist 1% Chance, dass alle Sessiondaten die älter sind als 40 min (glaub ich) gelöscht werden) sollte damit die Session wieder aufgenommen werden... schau mal nach deinen Cookies ob sich da was tut. Zitieren
kills Geschrieben 10. August 2004 Geschrieben 10. August 2004 zu 1. Das macht doch beides genau das gleiche! zu 2. $_SESSION[time] funktioniert so - probier es aus! funktioniert nur bei einem apache webserver!!! aber dazu gabs schon mal nen riesen thread... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.