Session Verständnisfrage
Amit
- php
Moin Allesamt.
Kann mir einer das folgendes erklären?
Folgender Code in sid.php:
<?PHP
session_start();
echo session_id();
echo "<br>-1-<br>";
echo $PHPSESSID;
echo "<br>-2-<br>";
echo SID;
echo "<br>-3-<br>";
session_destroy();
?>
Öffne ich sid.php mit einem neu gestarteten IE6 oder Moz 1.6 kommt es zum gewünschten Output:
d415c339dd3a6df493be90e14a760d48
-1-
-2-
PHPSESSID=d415c339dd3a6df493be90e14a760d48
-3-
Reloade ich sid.php steht folgendes im Browser:
d415c339dd3a6df493be90e14a760d48
-1-
-2-
-3-
Meine Fragen dazu:
1. Wo ist der Inhalt der Var SID nachdem reload?
2. Wieso hat die Var. $PHPSESSID keinen Inhalt?
3. Wieso bekomme ich keine Neue SessionID?
Vielen Dank im vorraus und einen schönen Sonntag
Amit
Hallo!
d415c339dd3a6df493be90e14a760d48
-1--2-
PHPSESSID=d415c339dd3a6df493be90e14a760d48
-3-Reloade ich sid.php steht folgendes im Browser:
d415c339dd3a6df493be90e14a760d48
-1--2-
-3-
Meine Fragen dazu:
- Wo ist der Inhalt der Var SID nachdem reload?
- Wieso hat die Var. $PHPSESSID keinen Inhalt?
- Wieso bekomme ich keine Neue SessionID?
Der Sinn einer Session-ID liegt ja gerade darin sich während eines Vesuches eben _nicht_ zu ändern, so dass die Session als Erkennungsmerkmal für genau einen User verwendet werden kann (siehe: http://www.dclp-faq.de/q/q-sessions-zweck.html).
Das was Du siehst ist vollkommen korrekt, beim ersten Request weiß PHP nicht ob Dein Browser Cookies akzeptiert, daher wird sowohl ein Cookie gesendet, als auch die SID-Konstante gefüllt(welche ggfs. an Links angehängt wird, normalerweise automatisch). Beim Refresh sendet Dein Browser dann den Session-Cookie mit, also weiß PHP dass Dein Browser Cookies akzeptiert und füllt die Konstante SID nicht mehr, da ab jetzt der Cookie zur Identifikation verwendet werden kann.
Ich kann Dir nur empfehlen mal auf folgenden Seiten ein bisschen zu lesen:
http://tut.php-q.net/sessions.html
http://de3.php.net/session
http://www.dclp-faq.de/ch/ch-version4_session.html
Viele Grüße
Andreas
Hallo!
- Wieso hat die Var. $PHPSESSID keinen Inhalt?
Diese Variablen werden in neueren PHP-Versionen nicht mehr unterstützt.
Wenn Du die Session-ID haben willst verwende die Funktion session_id(), wenn Du an Daten aus der Session willst verwende den superglobalen Array $_SESSION.
http://www.dclp-faq.de/q/q-formular-register-globals.html
http://de3.php.net/manual/de/security.registerglobals.php
http://de3.php.net/manual/de/language.variables.predefined.php
- Wieso bekomme ich keine Neue SessionID?
Wie gesagt, deshalb: http://www.dclp-faq.de/q/q-sessions-zweck.html
Grüße
Andreas