HILFE!!! Formulardaten gehen verloren mit Sessions

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

  • HILFE!!! Formulardaten gehen verloren mit Sessions

    Hallo erstmal!

    Ich habe ein Problem, daß mich jetzt schon 3 Tage beschäftigt und ich habe bisher keine Lösung gefunden. :-(

    Anfänglich wird mit session_start() und session_is_registered() überprüft, ob der User eingeloggt ist, bzw. es wird der Benutzername ermittelt.
    Weiterhin habe ein Formular mit 18 Feldern.
    Aus einer Datei wird ermittelt, ob der User schon mal Daten in dieses Formular eingetragen hat. Wenn ja, werden diese Formularfelder auch mit diesen Daten befüllt.
    Wenn der User nun auf "Daten senden" klickt wird eine verarbeitende PHP-Datei aufgerufen, die die Daten auf Korrektheit und Vorhandensein überprüft.
    Ist dies nicht der Fall, so wird ein Fehler ausgegeben und mittels history.back() ein Link auf die Formularseite ausgegeben. Gehe ich nun zurück zu meinem Formular, so sind ALLE Daten futsch.
    Weiß irgendwer eine Lösung???

    Danke,
    Lugi.

  • #2
    Hallo Luigi

    "Wenn der User nun auf "Daten senden" klickt wird eine verarbeitende PHP-Datei aufgerufen, die die Daten auf Korrektheit und Vorhandensein überprüft. "

    Ein Lösung wäre, die Daten nicht an eine andere Datei zu senden, sondern direkt in der Datei mit dem Formular zu testen.
    Siehe dazu php_self

    Gruss
    Borsi

    Kommentar


    • #3
      Hi Borsi...

      Das habe ich auch schon mit einer einfachen testdatei probiert.
      Es funktioniert aber trotzdem nicht....

      Kommentar


      • #4
        Hi Lugi

        Hast Du auch darauf geachtet, dass alle Session-Befehle ganz oben an der Seite untergebracht wurden?

        Gruss
        Borsi

        Kommentar


        • #5
          Ja...

          Probier doch mal dieses kleine Beispielskript aus:
          http://www.saturdaymorning.de/test/lugi/buli/test.php

          Der Source-Code ist hier:

          <?PHP

          session_start();

          ?>

          <html>
          <body>

          <?

          if (isset($submit))
          {
          echo $test."<br>\n";
          echo "<a href='javascript:history.back()'>Zurück</a>\n";
          }
          else
          {

          ?>

          <form method="POST" action="<? echo $PHP_SELF; ?>">
          <input type=text name=test><br>
          <input type=submit name=submit value="Senden">
          </form>

          <?

          }

          ?>

          </body>
          </html>

          Kommentar


          • #6
            Hallo Lugi

            Ich habe einen ähnlichen Fall, da funzt es mit dem IE, leider mit dem NC 4.78 nicht.

            Mein Code sieht leicht anders aus:

            echo "<form><input type=button value=\"zurück\" onClick=\"history.back()\"></form>";

            Gruss
            Borsi

            Kommentar


            • #7
              das problem kenn ich, einige browser speichern die formulardaten, andere nicht.

              du könntest für den zurück-button aber ein neues formular aufmachen, wo sämtliche variablen nochmal als hidden übergeben werden...
              eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

              Kommentar


              • #8
                das liegt alles nur an der session

                wenn ich die zeile session_start() auskommentiere, dann bekomme ich die formulardaten wieder angezeigt........
                ich habe leider bis jetzt noch keine lösung gefunden, aber ich brauche die session auf jeden fall.........

                Kommentar


                • #9
                  Kann mir denn keiner bei meinem Problem weiterhelfen? Habe bis jetzt immer noch keine gute Lösung gefunden...:-(((

                  Kommentar


                  • #10
                    "wenn ich die zeile session_start() auskommentiere, dann bekomme ich die formulardaten wieder angezeigt"

                    Ganz klar, mit session_start() öffnest Du ja eine neue Session, somit sind die alten Daten natürlich weg. Selbst wenn Du auf der Überprüf-Seite ein history.back() einsetzt, wir da ja trotzdem die Seite neu aufgebaut und somit auch session.start() ausgeführt.

                    Anstatt history.back() mach einen Link auf die Seite und übergebe zusätzlich eine Variable z.B. $check = failed.

                    Vor Dein sesion_start() setzt Du dann einfach eine Abfrage:

                    if ($check != "failed") {
                    session.start()
                    ...
                    }

                    Somit führt er die nur aus, wenn die Seite direkt aufgerufen wird.

                    Gruß, Andi

                    Kommentar


                    • #11
                      Sorry, muss mich korrigieren,

                      mit session_start() nimmst Du auch variablen wieder auf, so weit ich aber weis nur solche, die per GET übergeben werden, Formulare in altbewährter Form sendet man meistens aber mit POST.
                      Vielleicht liegts daran!

                      Gruß

                      Kommentar


                      • #12
                        mit history.back() verlierst du deine SessionID, d.h., gehst du mit History.Back() zurück, gibt dir Session_start() eine neue SessionID, da keine alte an die Funktion übergeben worden ist. Ausnahme: Der User unterstützt Cookies und PHP ist dementsprechend eingestellt, die Sessionid auch in ein Cookie weiterzugeben. Unterstützt der Benutzer keine Cookies, sind die Daten verloren.

                        gruss

                        Kommentar

                        Lädt...
                        X