treziman: session_id übergeben mit 'POST' + 'hidden'

Hallo @all,
obwohl mir das Prinzip klar ist, habe ich mal eine Frage zum Detail. Es geht um die Weitergabe der session_id bei gesperrten Cookies. Mein Script in Kürze:
startdatei:
<?
  session_start();
   ...(Code)
     echo"<form action = 'ziel.php' method = 'POST'>
          <input.....>(nicht wichtig)
              <input type='hidden' name='PHPSESSID' value=session_id()>
          </form>";
?>

Datei 'ziel.php':
<?
  session_start();
   ...(Code)
?>

Testläufe mit ein - und ausgeschalteten Cookies ergaben zwar keine Fehlermeldung und es funktioniert alles, aber hier ist mir doch unklar, wie die session_id an die Zieldatei weitergegeben wird. Müsste zu Beginn der Zieldatei, da die session_id mittels 'POST' übergeben wurde, nicht in etwa folgendes stehen?

<?
  session_id() = $_POST [PHPSESSID];
    session_start();
      ... (code)
?>

Auch die Weitergabe mit:
<?
   ...
      echo"<a href='ziel.php? =SID'>(Text)</a>";
   ...
?>

Datei 'ziel.php':
<?
  session_start();
   ...(Code)
?>
funktioniert bei ausgeschalteten Cookies.

Kann mich hier jemand aufklären?

Dankeschön im Voraus.
treziman

  1. hi,

    [..] Müsste zu Beginn der Zieldatei, da die session_id mittels 'POST' übergeben wurde, nicht in etwa folgendes stehen?

    session_id() = $_POST [PHPSESSID];

    Mit Sicherheit nicht, denn lefthand steht bei dir eine Funktion. Du versuchst hier also, einer Funktion einen Wert zuzuweisen.

    Hotti

    1. Hallo Hotti,
      dankeschön für Deine Antwort.

      [..] Müsste zu Beginn der Zieldatei, da die session_id mittels 'POST' übergeben wurde, nicht in etwa folgendes stehen?

      session_id() = $_POST [PHPSESSID];

      Mit Sicherheit nicht, denn lefthand steht bei dir eine Funktion. Du versuchst hier also, einer Funktion einen Wert zuzuweisen.

      Das ist mir klar! Es geht mir vielmehr um die Frage, ob $_POST [PHPSESSID] automatisch ausgelesen wird oder ob man dies nicht noch 'manuell' tun müsste?
      Also ungefähr so:
       Zieldatei:
       <?
        session_id(); //Wird hier die session-ID von $_POST [PHPSESSID] ausgelesen und gesetzt?
          session_start();
             ...
       ?>

      treziman

      1. hi,

        Das ist mir klar! Es geht mir vielmehr um die Frage, ob $_POST [PHPSESSID] automatisch ausgelesen wird oder ob man dies nicht noch 'manuell' tun müsste?

        Freilich musst Du Deine Post-Variablen selbst auslesen. Und prüfe mal, ob die Session-ID überhaupt im Formular ankommt.

        Ansonsten:
        session_name($sessName); // Initialisierung einer Session und Array $_SESSION
        session_start();         // Set-Cookie:... (Header an Webserver)
        $id = session_id();      // gibt genau den zufälligen String zurück, der auch im Cookie als Wert gesetzt wurde
                                 // hier haben wir die $id schon bevor der Cookie gelesen werden muss

        Hotti

        1. Freilich musst Du Deine Post-Variablen selbst auslesen. Und prüfe mal, ob die Session-ID überhaupt im Formular ankommt.

          Im Testlauf mit ausgeschalteten Cookies habe ich folgendes gemacht:
          <?
           ...
             $_SESSION [test1] = "geht";
             $_SESSION [test2] = "geht auch";
           ...
          ?>

          In der Zieldatei:
          <?
            ...
             session_start();
                echo $_SESSION [test1]; // Ausgabe = 'geht'
                echo $_SESSION [test2]; // Ausgabe = 'geht auch'
            ...
          ?>

          Funktionierte also. Daher habe ich vermutet, dass die session-ID eben 'automatisch' ausgelesen wird.
          Gelesen habe ich natürlich vorher darüber schon, doch genau auf meine Frage habe ich nicht die richtige Antowrt gefunden. Daher mein Posting.
          treziman

      2. Hi,

        Es geht mir vielmehr um die Frage, ob $_POST [PHPSESSID] automatisch ausgelesen wird oder ob man dies nicht noch 'manuell' tun müsste?
        Also ungefähr so:
        Zieldatei:
        <?
          session_id(); //Wird hier die session-ID von $_POST [PHPSESSID] ausgelesen und gesetzt?

        Beantworte dir diese Frage bitte selbst, in dem du im Manual nachschaust, was session_id bewirkt.
        Erkenne dann bitte, dass es hier und so vollkommen sinnfrei ist.

        session_start();

        Was an der Beschreibung im Manual,

        session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie

        ist dir denn zu ungenau?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
      3. Das ist mir klar! Es geht mir vielmehr um die Frage, ob $_POST [PHPSESSID] automatisch ausgelesen wird ...?

        Wenn man im Formular den richtigen Namen angibt, PHPSESSID ist "nur" der Standard, dann ja.

  2. Hi,

    hier ist mir doch unklar, wie die session_id an die Zieldatei weitergegeben wird.

    Na so, wie du es implementiert hast:

    <input type='hidden' name='PHPSESSID' value=session_id()>

    Das ist die Weitergabe der Session-ID.

    Müsste zu Beginn der Zieldatei, da die session_id mittels 'POST' übergeben wurde, nicht in etwa folgendes stehen?

    session_id() = $_POST [PHPSESSID];

    Von dem (Denk-)Fehler, den hotti schon angesprochen hat, abgesehen - nein, muss nicht. PHP kümmert sich selber darum, in $_REQUEST nach der Session-ID zu schauen.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Danke Euch beiden, Hotti und ChrisB

      Na so, wie du es implementiert hast:

      <input type='hidden' name='PHPSESSID' value=session_id()>

      Das ist die Weitergabe der Session-ID.

      Müsste zu Beginn der Zieldatei, da die session_id mittels 'POST' übergeben wurde, nicht in etwa folgendes stehen?

      session_id() = $_POST [PHPSESSID];

      Von dem (Denk-)Fehler, den hotti schon angesprochen hat, abgesehen - nein, muss nicht. PHP kümmert sich selber darum, in $_REQUEST nach der Session-ID zu schauen.

      MfG ChrisB

      Jetzt verstehe ich! Folglich muss auch nicht zu Beginn der 'ziel.php'
      session_id(); aufgerufen werden - es genügt also session_start(); ?

      treziman

      1. Hi,

        bitte sinnvoll zitieren, nicht pauschal alles.

        Jetzt verstehe ich! Folglich muss auch nicht zu Beginn der 'ziel.php'
        session_id(); aufgerufen werden - es genügt also session_start(); ?

        session_id ohne Parameter aufzurufen, liefert sowieso nur die aktuelle Session-ID zurück - es hat also bzgl. des nachfolgenden session_start gar keine Auswirkung.

        Und ja, unter normalen Umständen genügt session_start().

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]