bert: Sessionvariablen überschreiben

Hallo,

ich habe ein Formular erstellt, das von einem Benutzer ausgefüllt werden muß. Anschließend wird es zu Kontrolle nocheimal aufgerufen. Allerdings nicht mit PHP_Self sondern ganz neu. Die Variablen werden über Sessions übergeben. Wenn der Benutzer nun einen Fehler entdeckt, Bsp. falsche Telefonnummer, dann soll er die Möglichkeit haben zurück zum ursprünglichen Formular zu gehen und sie dort zu ändern. Dies funktioniert leider nicht, da der erste Wert in der Session gespeichert ist. Gibt es eine Möglichkeit eine Sessionvariable zu überschreiben? Oder hat vielleicht eine Idee, wie man es besser lösen könnte?

Gruß bert

  1. Hallo,

    also ich habe mir wirklich Mühe gegeben zu verstehen, was Du meinst. :-/

    ich habe ein Formular erstellt, das von einem Benutzer ausgefüllt werden muß.

    Kapiert.

    Anschließend wird es zu Kontrolle nocheimal aufgerufen. Allerdings nicht mit PHP_Self sondern ganz neu. Die Variablen werden über Sessions übergeben.

    Was heisst ganz neu? Wird nochmal das gleiche Skript aufgerufen, dass das Formular darstellt oder ein anderes?

    Wenn der Benutzer nun einen Fehler entdeckt, Bsp. falsche Telefonnummer, dann soll er die Möglichkeit haben zurück zum ursprünglichen Formular zu gehen und sie dort zu ändern.

    Wie zurück? Über den "Back"-Button oder einen Link?

    Dies funktioniert leider nicht, da der erste Wert in der Session gespeichert ist.

    Wenn der "erste" Wert in der Session gespeichert ist, dann ist es doch genau der, der nun geändert werden soll, oder? Also steht dann im Formular richtigerweise der falsche Wert, der nun korrigiert werden soll/kann.

    Gibt es eine Möglichkeit eine Sessionvariable zu überschreiben?

    Du überschreibst sie, indem Du die registrierte Variable mit einem neuen Wert setzt oder indem Du session_unregister benutzt.

    Tut mir leid, vielleicht versteht Dich jemand anderes hier besser.

    Gruss, Stefan

    1. Hallo,

      also ich habe mir wirklich Mühe gegeben zu verstehen, was Du meinst. :-/

      ich habe ein Formular erstellt, das von einem Benutzer ausgefüllt werden muß.

      Kapiert.

      Anschließend wird es zur Kontrolle nocheimal aufgerufen. Allerdings nicht mit PHP_Self sondern ganz neu. Die Variablen werden über Sessions übergeben.

      Was heisst ganz neu? Wird nochmal das gleiche Skript aufgerufen, dass das Formular darstellt oder ein anderes?

      Es wird ein anderes Skript aufgerufen.

      Wenn der Benutzer nun einen Fehler entdeckt, Bsp. falsche Telefonnummer, dann soll er die Möglichkeit haben zurück zum ursprünglichen Formular zu gehen und sie dort zu ändern.

      Wie zurück? Über den "Back"-Button oder einen Link?

      über einen Link. Die Sessionvariablen werden mitübergegeben. Der Benutzer soll die richtigen Daten nicht nochmal eingeben müssen.

      Dies funktioniert leider nicht, da der erste Wert in der Session gespeichert ist.

      Wenn der "erste" Wert in der Session gespeichert ist, dann ist es doch genau der, der nun geändert werden soll, oder? Also steht dann im Formular richtigerweise der falsche Wert, der nun korrigiert werden soll/kann.

      Genau

      Gibt es eine Möglichkeit eine Sessionvariable zu überschreiben?

      Du überschreibst sie, indem Du die registrierte Variable mit einem neuen Wert setzt oder indem Du session_unregister benutzt.

      Ja, aber wenn ich session_unregister verwende, dann ist der Wert ganz weg. Man weiß ja nicht vorher ob es eine falsche Eingabe war oder nicht.

      Tut mir leid, vielleicht versteht Dich jemand anderes hier besser.

      Ich finde Du hast mich schon ganz gut verstanden. :)

      Gruss, Stefan

      Gruß bert

      1. Du überschreibst sie, indem Du die registrierte Variable mit einem neuen Wert setzt oder indem Du session_unregister benutzt.
        Ja, aber wenn ich session_unregister verwende, dann ist der Wert ganz weg. Man weiß ja nicht vorher ob es eine falsche Eingabe war oder nicht.

        Und was hindert Dich daran einfach nochmal alle Felder in die gleichen Variablen zu speichern, in die Du sie ja vorher schon erfolgreich gespeichrt hast?

        Also User kommt, kriegt Formular vorgesetzt...
        User füllt Formular aus und schickt es ab...
        Skript registriert die Formulardaten in einer/der Session und leitet wieter an die Darstellung, um die Eingabedaten zu überprüfen...
        User findet Fehler in seiner Eingabe und klickt auf den Link zum Formular...
        User ändert die fehlerhaften Daten im Formular und schickt Formular nochmals ab...
        Skript registriert die Formulardaten in Session... etc.

        1. Und was hindert Dich daran einfach nochmal alle Felder in die gleichen Variablen zu speichern, in die Du sie ja vorher schon erfolgreich gespeichrt hast?

          Also User kommt, kriegt Formular vorgesetzt...
          User füllt Formular aus und schickt es ab...
          Skript registriert die Formulardaten in einer/der Session und leitet wieter an die Darstellung, um die Eingabedaten zu überprüfen...
          User findet Fehler in seiner Eingabe und klickt auf den Link zum Formular...
          User ändert die fehlerhaften Daten im Formular und schickt Formular nochmals ab...
          Skript registriert die Formulardaten in Session... etc.

          Das tut es eben nicht. Wenn man Änderungen vornimmt und das Formular ein zweites Mal abschickt erscheinen die gleichen Werte wie beim ersten Mal.

          1. Das tut es eben nicht. Wenn man Änderungen vornimmt und das Formular ein zweites Mal abschickt erscheinen die gleichen Werte wie beim ersten Mal.

            Hmm, dann müsste man was vom Code sehen, um den Fehler zu erkennen.