Michael W.: Session_Register

Hallo,

gibt es eine Funktion, die Variablen auf mehrere Seiten hinweg am "Leben" halten kann?
Ja Session_Register().

Und was ist, wenn sich der Inhalt der Variable ständig ändert und in der Registrierten Variable nun immer noch das drin steht was Session_Register() als ersten aufgenommen hat?
Gibt es da eine andere lösung?
Mache ich was Falsch?
Wie kann man das Problem übergehen bzw. wie kann ich den Inhalt der Registrierten Variable ändern?
Soll ich mit Cookies Arbeiten?

MfG
Michael Wölk

  1. Hallo Michael,

    im Normalfall wird auf dem Client wirklich nur die Session gespeichert; die ist unveränderlich. Die Daten die sich ändern legst Du einfach serverseitig ab, da Du ja immer die logische Verknüpfung über die Session des Clients hast.

    Gruß Jan

    1. Hi,

      Du meinst garnix an funktion brauch ich, alleine die session reicht?
      Tuts aber leider nicht.

      MfG
      Michael Wölk

      1. Hallo Michael,

        beschreib mal genau Dein Problem. Die Session nutzt Du doch einfach nur um den User zu finden. Alle anderen Daten liegen doch bei Dir auf dem Server.

        Gruß Jan

        1. Das ist nicht einfach das Problem zu beschreiben, aber evtl ist was auschlaggebendes dabei:

          ein frameset! oben und unten!
          oben sind zwei dropdown menüs die bei onchange den parameter: ?vari1=x und ?vari2=x nach unten geben. unten wird bei auswahl des ersten dropdownmenüs $vari1 aufgenommen und ausgeführt. wähle ich im 2. menü was aus dann ist $vari1 weg und $vari2 wird ausgeführt (mit ausgeführt meine ich darstellen im sinne von: wenn die variable da ist, dann kann man durch den wert der variable viele schöne dinge ausführen).

          ich denke das dürfte reichen...

          MfG
          Michael Wölk

          1. Hm und wozu brauchst Du bis hierher Sessions? - Falls Du ICQ hast melde Dich mal, da wir hier ja nicht das ganze Forum zureden müssen... ICQ: 105200819

  2. Hallo Michael,

    was machen die Küchen? Ich könnte ne Musterküche gebrauchen, liefer dafür ne Musterlösung für die Sessions *ggg*

    Scherz beiseite:

    Es reicht, eine Session mit session_start() zu starten. Dadurch wird automaitsch ein Array bereitgestellt, dass $_SESSION heißt. In dieses Array werden durch den Aufruf der Funktion session_start() automatisch die Daten aus der Sessiondatei (wenn die schon da ist) gespeichert. Sonst ist es leer.

    Du kannst nun im Script alle Werte, die Du aufheben möchtest, in das Array eintragen, indem Du einfach eine Zuweisung an einen Wert vornimmst. Ist der Wert im Array schon vorhanden, wird er überschrieben, ist er noch nicht da, wird er angelegt. Vorsicht ist geboten bei mehrstufigen "Pfadangaben" für Weete im Array. Das können noch nicht alle PHP-Versionen verkraften.

    Beispiel: $_SESSION["vorgang"]["rechnung"][$renr]["position"][$repos]=$daten;

    Wenn jetzt in diesem Konstrukt irgendeine Stufe schon belegt war, dann kracht es.

    Wenn der "Weg frei war", dann wird diese Multi-Referenz automatisch angelegt.

    Beim Ende des Scriptes oder beim Abwürgen mit exit wird das Sessionarray automatisch in der Sessiondatei gespeichert. Sie wird mit den neuen Werten überschrieben!

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
    1. Beispiel: $_SESSION["vorgang"]["rechnung"][$renr]["position"][$repos]=$daten;

      Das ist mir leider zu unverständlich.
      Kannst du ein Beispiel machen wie ich $vari1 und $vari2 ein- und auslesen kann.
      du sagtest die wären im array $_SESSION.
      dann stelle ich mir vor das die variable so auszulesen geht
      $vari1 =  $_SESSION["vari1"]; // geraten/ungetestet
      richtig?

      und gespeichert wird sie automatisch!?

      ich probiers mal aus. aber die syntax da oben musst du mir nochmal erklären ;-)

      MfG
      Michael W.

      1. Also so gehts schonmal nicht:

        index.php
        <?php
        session_start();
        $vari1 = 'text1';
        print "vari1: $vari1";
        print "<br><a href="next.php">Weiter</a>";
        ?>

        next.php
        <?php
        session_start();
        $vari1 = $_SESSION["vari1"];
        print "vari1: $vari1";
        print "<br><a href="index.php">Zurück</a>";
        ?>

        hmmhmhmm

        1. HÄÄ?

          Beim Testen mit Session_Register(); ging das jetzt doch! also jetzt spinn ich:

          index.php
          <?php
          session_start();
          $vars = array();
          session_register("vars");
          $test1 = "test1.1";
          session_register("test1");
          session_register("test2");
          $test2 = "test2.1";
          $vars[] = "text1.1";
          $vars[] = "text2.1";
          $vars[] = "text3.1";

          print "vari1: $vars[0]<br>";
          print "vari2: $vars[1]<br>";
          print "vari3: $vars[2]<br>";
          print "test1: $test1<br>";
          print "test2: $test2<br>";

          print "<br><br><a href="next.php">Weiter</a>";
          ?>

          next.php
          <?php
          session_start();
          $vari1 = $vars[0];
          $vari2 = $vars[1];
          $vari3 = $vars[2];

          print "vari1: $vari1<br>";
          print "vari2: $vari2<br>";
          print "vari3: $vari3<br>";
          print "test1: $test1<br>";
          print "test2: $test2<br>";

          $vars[0] = "text1.2";
          $vars[1] = "text2.2";
          $vars[2] = "text3.2";
          $test1 = "test1.2";
          $test2 = "test2.2";

          print "<br><a href="next2.php">Weiter</a>";
          ?>

          next2.php
          <?php
          session_start();
          $vari1 = $vars[0];
          $vari2 = $vars[1];
          $vari3 = $vars[2];

          print "vari1: $vari1<br>";
          print "vari2: $vari2<br>";
          print "vari3: $vari3<br>";
          print "test1: $test1<br>";
          print "test2: $test2<br>";
          ?>

          in next2.php
          wird bei allen *.2 ausgegeben.
          egal ob ich die variable/array vorher oder nachher registriere...

          MfG
          Michael W.

          1. Hallo Michael,

            das wird doch ne Musterküche...

            Beim Testen mit Session_Register(); ging das jetzt doch! also jetzt spinn ich:

            session_register() ist "verboten" mit der Einführung von $_SESSION. Man kann das zwar noch behutsam weiterbenutzen, aber es gibt diverse Probleme...

            index.php
            <?php
            session_start();
            $vars = array();

            ###»» session_register("vars");
            $_SESSION["vars"]=$vars;  // jetzt sind die angelegt aber noch leer.

            $test1 = "test1.1";

            ###»» session_register("test1");
            ###»» session_register("test2");

            $test2 = "test2.1";
            $vars[] = "text1.1";
            $vars[] = "text2.1";
            $vars[] = "text3.1";

            print "vari1: $vars[0]<br>";
            print "vari2: $vars[1]<br>";
            print "vari3: $vars[2]<br>";
            print "test1: $test1<br>";
            print "test2: $test2<br>";

            print "<br><br><a href="next.php">Weiter</a>";

            $_SESSION["vars"]=$vars;  // die kann man dann im nächsten Script wiedr auslesen.

            ?>

            //---- next.php ----
            <?php
            session_start();
            $vars = $_SESSION["vars"];

            ?>

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.