Session Variable ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session Variable ändern

    wenn ich per post oder get die variable $var an eine datei, in der session_register("var") steht, schicke wird die variable ja bekanntlich in der session gespeichert!
    das funktioniert auch super!
    aber wie kann ich diese variable jetzt ändern? wenn ich einfach $var mit anderem inhalt an die datei mit session_register() wird diese nicht geändert sondern bleibt bei dem wert, der zuerst gesendet wurde!
    wie kann diese ändern?

    mfG+
    Guido

  • #2
    Original geschrieben von sprengstoff
    wenn ich einfach $var mit anderem inhalt an die datei mit session_register()
    [...]
    Das ist kein deutscher Satz, da fehlt das Verb - was machst du mit $var bzw. session_register()?

    CAT Music Files

    Kommentar


    • #3
      ok ok, ich hab mich behindert ausgedrückt!

      2. versuch:


      Wie kann ich eine Session Variable die ich mit einem bestimmten
      Wert per "post" oder "get" registriert ( session_register() ) habe ändern?


      Wenn ich die Variable einfach mit einem anderen Wert per session_register()
      registriere ändert sich die Variable nicht!


      Vielen Dank im voraus,


      Guido

      Kommentar


      • #4
        Bist du sicher, dass du das Session-Management verstanden hast? POST und GET sind Methoden zur Datenübertragung und haben nichts mit Sessions zu tun.

        Mit session_register() werden auch nur Variablen als Session-Variablen definiert. Die Werte änderst du direkt auf die übliche Weise:

        session_start();
        session_register('var');
        $var = 'blub';

        fertig.

        CAT Music Files

        Kommentar


        • #5
          Angenommen ich habe 2 PHP-Dateien:

          1. Datei (script1.php, Formular mit einem Feld):

          Code:
          <html>
          <head>
          	<title>Untitled</title>
          </head>
          <body>
          <form action="script2.php" method="post">
          <input type="text" name="feld">
          <input type="Submit" value="LOS">
          </form>
          </body>
          </html>
          2. Datei (script2.php, hier soll die Variable "feld" ausgegeben werden):

          Code:
          <?
          session_start();
          session_register("feld");
          ?>
          <html>
          <head>
          	<title>Untitled</title>
          </head>
          <body>
          <?
          echo $feld;
          ?>
          </body>
          </html>
          Wenn ich nun in script1.php eine bestimmte Eingabe (z.B. "test1") im Feld "feld" tätige wird die Variable folglich auch in script2.php wiedergegeben!
          Wenn ich aber die gleich Prozedur mit einer anderen Eingabe (z.B. "test2") wiederhole wird in script2.php immer wieder "test1" für die Variable $feld ausgegeben, also die erste Eingabe! Warum nicht "test2"?
          Woran liegt das und wie kann ich das ändern?

          mfG
          Guido

          Kommentar


          • #6
            Das liegt an der Reihenfolge der Priorität der Variablen, die dann angewendet wird, wenn mehrere Variablen gleichen Namens von verschiedenen Quellen zusammenkommen. Die Konfigurationsdirektive dafür lautet variables_order.

            Lässt dein Host hier keine Änderung zu, musst du die Variablennamen wohl ändern.

            CAT Music Files

            Kommentar


            • #7
              Die Session-Variablen haben absolut nichts mit der Priorität der Auswertung zu tun, da sie nicht automatisch ausgewertet werden. Und es ist unnötig, die Variablennamen zu ändern.

              Problem:
              Beim session_register wird der Wert der Variablen überschrieben, wenn sie schon in den Session-Daten gespeichert ist.

              vom Formular kommt: $variable=1
              in Session ist gespeichert: $variable=2;

              echo $variable; 1
              session_register ('variable');
              echo $variable; 2

              Lösung:
              Der in der Session gespeichert Wert wird geändert, wenn der Wert der Variablen nach dem Registrieren geändert wird.

              Lösung A:
              echo $variable; 1
              $temp = $variable;
              session_register('variable');
              echo $variable; 2
              $variable = $temp;
              echo $variable; 1, Wert in Session geändert

              Lösung B: funktioniert nur wenn track_vars=on
              echo $variable; 1
              session_register('variable');
              echo $variable; 2
              $variable = $HTTP_GET_VARS['variable'];
              echo $variable; 1, Wert in Session geändert

              Für Post-Formulare muss natürlich $HTTP_POST_VARS statt $HTTP_GET_VARS benutzt werden.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Vielen Dank Titus!


                Ich habs so gelöst (Lösung B):

                Code:
                session_register("variable");
                if ($HTTP_POST_VARS["variable"]) {$variable = $HTTP_POST_VARS["variable"];} else if ($HTTP_GET_VARS["variable"]) {$variable = $HTTP_GET_VARS["variable"];}
                mfG
                Guido

                Kommentar

                Lädt...
                X