[MySQL 4.1] Durch F5 werden die Daten immer wieder in die Datenbank eing

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

  • [MySQL 4.1] Durch F5 werden die Daten immer wieder in die Datenbank eing

    Hi,

    ich habe gerade was komisches entdeckt.

    Ich habe zwei PHP-Dateien geschrieben. form.php und insert.php.

    "form.php" ist ein Formular, das einige Werte an "insert.php" übergibt.
    "insert.php" stellt eine Verbindung zur Datenbank her und schreibt diese Werte in die Datenbank rein.

    Soweit, so gut.

    Nun habe ich festgestellt, dass auch wenn ich "insert.php" direkt ausführe, leere Einträge in die Datenbank eingetragen werden.

    Oder wenn ich mit dem Formular Werte an "insert.php" übergebe und "insert.php" diese dann in die Datenbank reinschreibt,und jedesmal wenn ich den Browser aktualisiere (F5) die Daten erneut in die Datenbank eingetragen werden.

    Ist das normal?


    Wie kann ich das unterbinden?

    Gruß

  • #2
    Der Computer macht was du programmierst, nicht was du willst.
    In diesem Sinne. Ändere dein Programm, welches eventuell prüft ob die Felder ausgefüllt worden sind oder ob in den letzten x Minuten Einträge mit der gleichen SID (oder IP oder was weiß ich was du nutzen willst) gemacht wurden


    Floriam
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      Oder z.B. dann per header() ne Weiterleitung machen...
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Oder z.B. dann per header() ne Weiterleitung machen...
        Die Datei insert.php baut eine Verbindung mit der Datenbank auf, trägt die aus dem Formular kommenden Daten in die Datenbank ein. Liest danach diese und andere Daten aus der Datenbank und listet sie auf.

        Daher kann ich hier keine Weiterleitung einbauen, denn die Seite muss nach dem Aufruf weiterhin angezeigt werden.
        oder ob in den letzten x Minuten Einträge mit der gleichen SID (oder IP oder was weiß ich was du nutzen willst) gemacht wurden
        Genau nach so einer Lösung suche ich.
        Kannst du hier bitte ein kleines Beispiel posten, oder kennst du vielleicht irgend ein Tutorial?

        Kommentar


        • #5
          Liest danach diese und andere Daten aus der Datenbank und listet sie auf.
          Was spricht dagegen, das Auslesen und Anzeigen in einer 2. Datei zu machen, zu der mit header() weitergeleitet wird? Wegen sowas mit Sessions oder Zeitsperren anzufangen, ist doch mit Kanonen auf Spatzen geschossen...

          Kommentar


          • #6
            Hmmm, eigentlich eine tolle Idee!!!!!!

            Ich test es gleich aus.

            Kommentar


            • #7
              Ok, jetzt sind es drei Dateien:
              index.php
              insert.php
              insert_2.php

              1) index.php übergibt die Wert aus einem Formular an insert.php
              2) insert.php schreibt diese in die Datenbank und wird sofort an insert_2.php weitergeleitet. (per Meta-Tag bzw. JavaScript)
              3) insert_2.php liest alle Daten aus der Datenbank und listet sie auf.

              Großartig und einfach. Besten Dank dafür.

              Dadurch ist aber ein neues Problem entstanden:

              Gibt es eine Möglichkeit bei einer Weiterleitung zugleich Werte zu übergeben?

              Es ist nämlich so, dass index.php zwei Variablen an insert.php übergibt, die ich dann in insert_2.php benötige.

              Wie soll ich aber die Wert an insert_2.php weitergeben??

              Kommentar


              • #8
                Na klar, kannst die Werte doch ganz normal in der URL übergeben.

                BTW: Das ist KEIN SQL-Problem! und *verschieb*

                Kommentar


                • #9
                  Ich empfehle dir ausserdem deine Weiterleitung per header() zu machen, da sonst jemand während der JavaScript-Weiterleitung immernoch F5 drücken könnte....

                  Kommentar


                  • #10
                    Ich empfehle dir ausserdem deine Weiterleitung per header() zu machen
                    Ist es möglich damit auch Varibalen weiterzugeben??

                    Kommentar


                    • #11
                      Hi,

                      Mach das per GET.

                      DZU hängst einfach an die URL deine variablen dran:
                      index.php?VARIABLE1=WERT1&VAIRABLE2=WERT2

                      Lesen kannst dun das per $_GET["Variable1"], etc.

                      Gruß kevin

                      Kommentar


                      • #12
                        Fantastisch, besten Dank.

                        Kommentar


                        • #13
                          HuHu

                          Warum so umständlich?

                          mach einfach wie Floriam schon sagte ne überprüfung..


                          mfg
                          Es gibt im Leben immer einen der besser ist als man selbst..das sollte keiner vergessen *fg

                          Kommentar


                          • #14
                            Original geschrieben von Luzifer45
                            HuHu

                            Warum so umständlich?

                            mach einfach wie Floriam schon sagte ne überprüfung..


                            mfg
                            Ja, aber dann bekommt der User wenn er F5 drückt so nen nerviges Feld "blabla diese Seite enthält POST-Daten blabla wollen Sie diese wirklich nocheinmal senden?" das käme dann nichmehr....
                            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                            var_dump(), print_r(), debug_backtrace und echo.
                            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                            Kommentar


                            • #15
                              mach einfach wie Floriam schon sagte ne überprüfung..
                              Überleg dir mal was umständlicher ist... Wurde aber schon gepostet.

                              Kommentar

                              Lädt...
                              X