Amit: Session Verständnisfrage

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

  1. Hallo!

    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?

    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

    1. Hallo!

      1. 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

      1. Wieso bekomme ich keine Neue SessionID?

      Wie gesagt, deshalb: http://www.dclp-faq.de/q/q-sessions-zweck.html

      Grüße
      Andreas