HONDA: "Back-Button" - Problem mit Datenbankeintrag

Hallo,

ich habe ein mehrseitiges Formular programmiert, welches auch tadellos funktioniert.

Einziges Problem: der Back-Button

Wie kann man verhindern, dass man mittels backbutton (der zweimal schnell hintereinander angeklickt wird) auf das bereits abgesendete erste Teilformular zurückgelangen kann?

Problem dahinter: Das in der mitte liegende Formular (also das zweite Teilformular) wird hierbei übersprüungen, und es wird ein leerer Datenbankeintrag durchgeführt.

Hat jemand bereits ein ähnliches Problem gehabt?
HONDA

  1. Hi,

    Wie kann man verhindern, dass man mittels backbutton (der zweimal schnell hintereinander angeklickt wird) auf das bereits abgesendete erste Teilformular zurückgelangen kann?

    gar nicht.

    Problem dahinter: Das in der mitte liegende Formular (also das zweite Teilformular) wird hierbei übersprüungen, und es wird ein leerer Datenbankeintrag durchgeführt.

    Dann prüfe das serverseitig besser ab.

    Hat jemand bereits ein ähnliches Problem gehabt?

    Natürlich, das ist Alltag.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Dann prüfe das serverseitig besser ab.

      Hi Chetah,

      wie meinst Du Serverseitig? ... ein eigenes Skript, das leere Datenbankeinträge entfernt?

      HONDA

      1. Hi,

        Dann prüfe das serverseitig besser ab.
        wie meinst Du Serverseitig? ... ein eigenes Skript, das leere Datenbankeinträge entfernt?

        nein, ich meine eine sinnvollere Konsistenzprüfung in dem Script, welches die Datenbankeinträge vornimmt.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Dann prüfe das serverseitig besser ab.
          wie meinst Du Serverseitig? ... ein eigenes Skript, das leere Datenbankeinträge entfernt?

          nein, ich meine eine sinnvollere Konsistenzprüfung in dem Script, welches die Datenbankeinträge vornimmt.

          Cheatah

          Hi,

          die für den Datenbankeintrag verantwortliche "Weiche" im Skript sieht folgendermaßen aus:

          //ZUGANG ZUR DATENBANK
          else if (($_SESSION['ID']==555) and !$fehler and $Userame and strlen($_POST['Password'])>2 and $userinuse<1 and $email and $password2) {
          include("../connect.inc.php");

          Funktioniert auch tadellos,... nur bei zweifachem Back (also Überspringen dieses Formulars), wird die if-sequenz offenbar einfach ignoriert und dennoch ein DB-Eintrag vorgenommen.

          Wie kann das sein?
          LG,
          HONDA

          1. Hi,

            else if (($_SESSION['ID']==555) and !$fehler and $Userame and strlen($_POST['Password'])>2 and $userinuse<1 and $email and $password2) {
            Funktioniert auch tadellos,... nur bei zweifachem Back (also Überspringen dieses Formulars), wird die if-sequenz offenbar einfach ignoriert und dennoch ein DB-Eintrag vorgenommen.

            nein, die Daten entsprechen nicht dem, was Du erwartest.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. »» nein, die Daten entsprechen nicht dem, was Du erwartest.

              Cheatah

              Sorry,...ich hab nicht ganz verstanden was Du damit meinst ... worauf bezieht sich das "nein" ... auf die If-Sequenz?

              was meinst Du mit "nicht erwartest"?

              HONDA

              1. Hi,

                nein, die Daten entsprechen nicht dem, was Du erwartest.
                Sorry,...ich hab nicht ganz verstanden was Du damit meinst ... worauf bezieht sich das "nein" ... auf die If-Sequenz?

                auf die Vermutung, sie würde übersprungen werden. Übrigens handelt es sich um eine Abfrage, nicht um eine Sequenz.

                was meinst Du mit "nicht erwartest"?

                Dass Deine Abfrage auf vermuteten Daten basiert, die nicht vorliegen.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hi,

                  nein, die Daten entsprechen nicht dem, was Du erwartest.
                  Sorry,...ich hab nicht ganz verstanden was Du damit meinst ... worauf bezieht sich das "nein" ... auf die If-Sequenz?

                  auf die Vermutung, sie würde übersprungen werden. Übrigens handelt es sich um eine Abfrage, nicht um eine Sequenz.

                  was meinst Du mit "nicht erwartest"?

                  Dass Deine Abfrage auf vermuteten Daten basiert, die nicht vorliegen.

                  Cheatah

                  Wenn diese nicht vorliegen würden, dann würde doch gar kein Datenbankeitnrag vorgenommen werden... oder verstehe ich da etwas falsch?

                  Das Problem ist ja, dass einer durchgeführt wird und zwar mit leeren Feldern.

                  HONDA

                  1. Hi,

                    Wenn diese nicht vorliegen würden, dann würde doch gar kein Datenbankeitnrag vorgenommen werden... oder verstehe ich da etwas falsch?

                    Du möchtest unter den von Dir genannten Umständen nicht in den if-Zweig der Abfrage gelangen, landest also dort. Also ist die Abfrage falsch. Der Grund ist, dass die der Abfrage zu Grunde liegenden Daten anders sind, als Du es vermutest.

                    Das Problem ist ja, dass einer durchgeführt wird und zwar mit leeren Feldern.

                    Das Problem ist, dass Du Dich mit Rätselraten beschäftigst, anstatt eine Analyse zu beginnen. Erst wenn Du das tust, kannst Du das Problem überhaupt erkennen. Bisher kann ich Dir nur das Offensichtliche sagen, nämlich dass andere Daten vorliegen, als Du erwartest.

                    Cheatah

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Das Problem ist, dass Du Dich mit Rätselraten beschäftigst, anstatt eine Analyse zu beginnen. Erst wenn Du das tust, kannst Du das Problem überhaupt erkennen. Bisher kann ich Dir nur das Offensichtliche sagen, nämlich dass andere Daten vorliegen, als Du erwartest.

                      Cheatah

                      Hi,

                      ja, das ist sogar sicher der Fall,... nur wie kann ich diese Analyse durchführen?

                      Ich habe ja explizit in der if-Abfrage einen DB-Eintrag ausgeschlossen, wenn nicht bestimmte Prämissen gegeben sind.

                      Bei einem leeren Feld etwa, soll eben genau kein Datenbankeintrag vorgenommen werden.

                      Wenn die If-Abfrage nicht ignoriert wird, warum funktioniert es dann nicht?

                      Kann es sein, dass dies ein Cache-Problem ist?
                      HONDA

                      1. Hi,

                        ja, das ist sogar sicher der Fall,... nur wie kann ich diese Analyse durchführen?

                        beispielsweise die Daten ausgeben oder anderweitig loggen. Debug-Ausgaben sind die trivialste Form der Code-Analyse.

                        Ich habe ja explizit in der if-Abfrage einen DB-Eintrag ausgeschlossen, wenn nicht bestimmte Prämissen gegeben sind.

                        Und die Prämissen sind augenscheinlich in Deinem Code nicht gegeben.

                        Wenn die If-Abfrage nicht ignoriert wird, warum funktioniert es dann nicht?

                        Auf die Gefahr hin, mich zu wiederholen: Weil die Daten nicht mit dem übereinstimmen, was Du erwartest.

                        Kann es sein, dass dies ein Cache-Problem ist?

                        Wenn dem so wäre, erhielte der Server erst gar keinen Request.

                        Cheatah

                        --
                        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                        X-Will-Answer-Email: No
                        X-Please-Search-Archive-First: Absolutely Yes
                    2. Hättest du ihm einfach folgendes gesagt:

                      "Mache eine Prüfung if (formulareingabe != 0)"

                      wäre das schnell erklärt gewesen :)

                      1. Hi,

                        Hättest du ihm einfach folgendes gesagt:
                        "Mache eine Prüfung if (formulareingabe != 0)"
                        wäre das schnell erklärt gewesen :)

                        dummerweise habe ich keine Ahnung, ob etwas derartiges reicht. Der einzige, der das sagen kann, ist HONDA - nachdem er seine Problemanalyse durchgeführt hat. Trotz anderslautender Meinungen bin ich nicht allwissend.

                        Cheatah

                        --
                        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                        X-Will-Answer-Email: No
                        X-Please-Search-Archive-First: Absolutely Yes