Ulli: $_SESSION Verwirrung

Hallo,

ich kann mir folgendes nicht erklären:

Auf der ersten Seite wird $_SESSION["Data"] = $Data gesetzt.
Dann wird eine andere Datei aufgerufen und ich will wissen was in $_SESSION["Data"] steht. Soweit alles iO. Nun setze ich $Data = "irgendwas" und schaue nochmal in $_SESSION["Data"] (beides in der neu aufgerufenen Datei).

Jetzt Preisfrage: Was steht dort?
"irgendwas" (!) und nicht das, was eine Seite zuvor zugewiesen wurde.
Das geht doch gar nicht - oder ?
Bitte sagt mir was ich falsch mache.

Grüße, Ulli

  1. das liegt an einer Servereinstellung. Das Problem hatte ich auch schon. Weiss aber nicht mehr was es für eine Servereinstellung war.

    Es sollte aber auch gehen, wenn du die Session zuerst in eine andere Variable schreibst.

    als zb.:

    $temp_var = $_SESSION[Data];
    $Data = $temp_var;

  2. Hallo Ulli,

    Bitte sagt mir was ich falsch mache.

    ich tippe mal auf register_globals=on

    Grüße aus Nürnberg
    Tobias

    1. Hello,

      Bitte sagt mir was ich falsch mache.
      ich tippe mal auf register_globals=on

      Warum sollte diese Einstellung die Daten in der Sessiondatei verändern?

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hi Tom,

        ich tippe mal auf register_globals=on

        Warum sollte diese Einstellung die Daten in der Sessiondatei verändern?

        Das habe ich mich damals auch gefragt, scheint aber in der Tat so zu sein:

        $_SESSION['foo'] = "bar";
        echo $foo; //Ausgabe: bar
        $foo = "hallo";
        echo $_SESSION['foo']; //Ausgabe: hallo

        Vermutlich läuft das registrieren der Session Variablen genauso wie das der GET/POST Variablen ab.
        Übrigens gibt es auch eine Funktion session_register().

        MfG, Dennis.

        1. Hello,

          ich tippe mal auf register_globals=on

          Warum sollte diese Einstellung die Daten in der Sessiondatei verändern?

          Das habe ich mich damals auch gefragt, scheint aber in der Tat so zu sein:

          $_SESSION['foo'] = "bar";
          echo $foo; //Ausgabe: bar
          $foo = "hallo";
          echo $_SESSION['foo']; //Ausgabe: hallo

          Das darf aber nicht sein!

          Vermutlich läuft das registrieren der Session Variablen genauso wie das der GET/POST Variablen ab.
          Übrigens gibt es auch eine Funktion session_register().

          Die sollte man nicht mehr verwenden, selbst wenn man aus irgendwelchen Gründen mit register_globals=on arbeiten 'muss'.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hallo,

            $_SESSION['foo'] = "bar";
            echo $foo; //Ausgabe: bar
            $foo = "hallo";
            echo $_SESSION['foo']; //Ausgabe: hallo

            Das darf aber nicht sein!

            Ja. Aber wie stelle ich das ab???

            Grüße, Ulli

            1. register_global auf off schalten

              1. Hallo,

                register_global auf off schalten

                Geht leider nicht =(
                Aber wenigstens hab ich jetzt verstanden was dort vor sich geht.

                Grüße, Ulli

          2. Hi Tom,

            [...]
            Das darf aber nicht sein!

            Sag das den Entwicklern ;-)
            Das ganze register_globals ist sowieso Mist.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
            Werbung ist der Versuch, das Denkvermögen des Menschen so lange außer Kraft zu setzen, bis er genügend Geld ausgegeben hat. (Ambrose Bierce)
          3. echo $begrüßung;

            $_SESSION['foo'] = "bar";
            echo $foo; //Ausgabe: bar
            $foo = "hallo";
            echo $_SESSION['foo']; //Ausgabe: hallo

            Das darf aber nicht sein!

            So ist es wahrscheinlich auch nicht. Mein Versuch jedenfalls ergab mit PHP4 und PHP5 und echo durch var_dump getauscht:

            Notice: Undefined variable: foo in ...test.php on line  {var_dump($foo)}
            NULL
            string(3) "bar"

            echo "$verabschiedung $name";

    2. Hallo,

      ich tippe mal auf register_globals=on

      Ja, aber was hat das damit zu tun, dass der Variablenname an die Daten in $_SESSION gebunden ist.

      Grüße, Ulli

  3. Hello,

    Jetzt Preisfrage: Was steht dort?
    "irgendwas" (!) und nicht das, was eine Seite zuvor zugewiesen wurde.

    Welche PHP-Version benutzt DU denn?

    Hast Du vielleicht versehtntlich eine "Referenz" vereinbart und keine einfache Zuweisung betrieben?

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo,

      Welche PHP-Version benutzt DU denn?

      4.3.3

      Hast Du vielleicht versehtntlich eine "Referenz" vereinbart und keine einfache Zuweisung betrieben?

      Nö - einfach nur '='. Und einfache $ Zeichen

      Grüße, Ulli

  4. Hallo,

    da ich register_globals nicht auf off stellen kann, muss ich mich wohl mit dem Problem herumschlagen.

    Danke allen ...

    Ulli

    1. puts "Hallo " + gets.chomp + "."

      ?> Ulli
      => Hallo Ulli.

      da ich register_globals nicht auf off stellen kann, muss ich mich wohl mit dem Problem herumschlagen.

      Was hast du ausprobiert, was dich letztendlich zu dieser Erkenntnis geführt hat?

      Einen schönen Freitag noch.

      Gruß, Ashura

      --
      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
      30 Days to becoming an Opera8 Lover -- Day 20: search.ini
      Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
      [Deshalb frei! - Argumente pro freie Software]
      1. Hallo,

        Was hast du ausprobiert, was dich letztendlich zu dieser Erkenntnis geführt hat?

        Was meinst du? Das ich die php.ini nicht verändern kann oder das $_SESSION["somename"] mit $somename zusammenhängt?

        Grüße, Ulli

        1. puts "Hallo " + gets.chomp + "."

          ?> Ulli
          => Hallo Ulli.

          Was meinst du? Das ich die php.ini nicht verändern kann oder das $_SESSION["somename"] mit $somename zusammenhängt?

          Dir ist also nicht bewusst, dass du für diese Art der Konfiguration gar keinen Zugriff auf die php.ini brauchst.

          Die Möglichkeit, die du ausprobieren solltest, lautet .htaccess.

          Einen schönen Freitag noch.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Day 20: search.ini
          Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
          [Deshalb frei! - Argumente pro freie Software]
          1. Hallo,

            Dir ist also nicht bewusst, dass du für diese Art der Konfiguration gar keinen Zugriff auf die php.ini brauchst.
            Die Möglichkeit, die du ausprobieren solltest, lautet .htaccess.

            Doch schon - diesen Fall hab ich mal außen vor gelassen. Nützt aber auch nichts ... die register_globals müssen auf on bleiben.

            Grüße, Ulli

            1. hi,

              Doch schon - diesen Fall hab ich mal außen vor gelassen. Nützt aber auch nichts ... die register_globals müssen auf on bleiben.

              warum - weil du an solchen fehlern wie dem hier auftretenden wirklich hängst, und ihn sowie die weiteren mit rg=on verbundenen risikien nicht missen möchtest?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Hallo,

                warum - weil du an solchen fehlern wie dem hier auftretenden wirklich hängst, und ihn sowie die weiteren mit rg=on verbundenen risikien nicht missen möchtest?

                Nicht ganz ;)
                In dem Projekt gib es leider viele, viele Codesegmente, die exessiven Gebrauch der Möglichkeiten machen die register_globals=on bietet. Und da die Zeit (wie immer) zu knapp ist alles zu ändern, bleibts halt an. *mitdenschulternzuck*

                Grüße, Ulli