Stefan Lodders: Verwendung von $_SESSION ab PHP 4.1.0

Hallo,

ich habe meine PHP-Version von 4.0.4 auf 4.1.2 hochgerüstet, um die gleiche Version zu haben, wie mein Provider.
Nun würde ich gerne auch die Neuerungen in Anspruch nehmen und habe dazu eine Frage:

Im Manual steht: "Wenn Sie $HTTP_SESSION_VARS/$_SESSION verwenden, sollten Sie session_register(), session_is_registered() und session_unregister() nicht verwenden."
Benutze ich aber session_register _nicht_, dann wird die Variable auch nicht gespeichert (also bloßes $_SESSION['test']='test'; geht nicht).

Wie ist der Satz des Manuals dann zu verstehen? Wie bekomme ich eine Variable in eine Session, ohne den Befehl session_register zu verwenden?

Danke :).

MfG
Stefan

  1. Hi!

    Du bekommst eine Variable in die Session wie folgt:

    <?
    session_start();
    $_SESSION["variable"] = $variable;
    ?>

    Ich denke Du kannst Du session_register()... verwenden, mußt Dir nur im KLaren sein, das die sich vielleicht gegenseitig ins Gehege kommmen!

    Grüße
    Andreas

    1. Hi,

      genau das geht bei mir nicht:

      <?
      session_start();
      $_SESSION["variable"] = $variable;
      ?>

      Habe folgende Testskripts:
      #sessiontest.php
      <?php
          session_start();
         $_SESSION["test"]="teststring";

      ?>
      <html>
      <a href="sessiontest2.php">weiter</a>
      </html>

      #sessiontest2.php
      <?php
        session_start();

      foreach($_SESSION as $k => $v)
      { echo $k." ".$v."<br>\n"; }

      print $_SESSION["test"];

      ?>

      Die Session wird angelegt, aber ist leer. Das zweite Skript gibt nichts aus. register_globals ist off.

      Das kann doch nur ein Minifehler sein...

      Gruss, Stefan

      1. Also ich habe in keinem meiner Scripte "session start()"

        Ich melde die Sessionvariablen einfach an:
        zB. session_register("kunde","kundennummer","artikel")
        Das muss dann im head jeder PHP-Datei stehen, in der auf diese Varioablen zugegriffen werden soll.

        Das lässt sich einfacher auch über einen include lösen:
        include("sessionvars.php");
        in der Sessionvars-Datei steht dann nur:
        <?php
        session_register("kunde","kundennummer","artikel")
        ?>
        Das hat den Vorteil, dass jeder Zeit neue Session-Variablen angelegt werden können, ohne das diese in jedem Dokument angemeldet werden müssen.

        Vieleicht hilfts,
        viele Grüsse
        André

        1. in der Sessionvars-Datei steht dann nur:
          <?php
          session_register("kunde","kundennummer","artikel")
          ?>

          Das ist ja gerade das, was ab 4.1.0 nicht mehr empfohlen wird: $_SESSION und session_register() zu verwenden. aber bei mir funktioniert leider nur die Version mit session_register() und nicht ohne.

          Gruss, Stefan

          1. Hallo Stefan,

            Das ist ja gerade das, was ab 4.1.0 nicht mehr empfohlen wird: $_SESSION und session_register() zu verwenden. aber bei mir funktioniert leider nur die Version mit session_register() und nicht ohne.

            Lass mich raten, du versuchst das mit der Windows-Version PHP 4.12.
            ich bin vor einigen Tagen an dem Problem fast verzweifelt, bis mir in einer Mailingliste endlich der Hinweis gegeben wurde, dass diese Version  in puncto session-handling buggy ist.
            update auf 4.2 oder downgrade auf 4.11
            Danach gings auf einmal.

            gruß Susanne

            1. Hallo Susanne,

              Lass mich raten, du versuchst das mit der Windows-Version PHP 4.12.
              ich bin vor einigen Tagen an dem Problem fast verzweifelt, bis mir in einer Mailingliste endlich der Hinweis gegeben wurde, dass diese Version  in puncto session-handling buggy ist.
              update auf 4.2 oder downgrade auf 4.11

              Oh. Tausend Dank. Du hast recht: ist Windoof. Ich bin verzweifelt und mache in meinem Wahnsinn schon lauter sinnlose Gif-Animationen, um mich abzulenken.

              Also wieder downloaden...

              Grüsse,
              Stefan

              1. Hallo,

                wenn ich das richtig verstehe, dann wird's auch mit einer neuen Version von PHP nicht laufen. Du musst nämlich machen, wie Andreas gesagt hat:

                $_SESSION["variable"] = $variable;
                                        ^^^^^^^^^^^
                                        hier muss der Wert hin

                Du hast folgendes gemacht:

                $_SESSION["variable"] = "variable";
                                        ^^^^^^^^^^^^^
                                        das ist falsch

                Grüße,

                Christian

                1. $_SESSION["variable"] = $variable;
                                          ^^^^^^^^^^^
                                          hier muss der Wert hin

                  Diese Version funktioniert leider auch nicht :(. Hatte ich schon versucht und habe es gerade nochmal gemacht.

                  Trotzdem Danke. :)

                  Stefan

                2. Hallo,

                  auch Hallo,

                  Du musst nämlich machen, wie Andreas gesagt hat:

                  $_SESSION["variable"] = $variable;
                                          ^^^^^^^^^^^
                                          hier muss der Wert hin

                  Du hast folgendes gemacht:

                  $_SESSION["variable"] = "variable";
                                          ^^^^^^^^^^^^^
                                          das ist falsch

                  ich würde behaupten beides ist richtig oder kann richtig sein.
                  im ersten fall übernimmst du eine bereits existente Variable in die Session. im zweiten deklarierst du eine neue Variable sofort als Session-Variable. Kommt drauf an was du willst.

                  Gruß Susanne

                  1. $_SESSION["variable"] = $variable;
                                            ^^^^^^^^^^^
                                            hier muss der Wert hin

                    $_SESSION["variable"] = "variable";
                                            ^^^^^^^^^^^^^
                                            das ist falsch

                    Um mal der Theorie die Praxis folgen zu lassen: Ich habe jetzt PHP4.2.1 drauf und _beides_ funktioniert einwandfrei. Also PHP4.1.2 unter Windoof ist buggy bezüglich der Session-Verwaltung.

                    Gruss, Manti