Tolwin: $_POST Variablen nach Refresh noch vorhanden

Hallo Forum,

habe ein Formular gestrickt welches an sich selbst eingegebene Daten posted. Wenn ich nach der Eingabe der Daten diese per Submit absende,
werden diese auch erfolgreich in die Datenbank eingetragen. Allerdings kann ich mit jedem Refresh der Seite den gleichen Datensatz erneut eintragen. Dies wollte ich mit unset($_POST) abfangen - leider erfolglos.

Kann mir jemand sagen wie ich dieses Problem beheben könnte?

Vielen Dank und Gruß
Tolwin

  1. echo $begrüßung;

    habe ein Formular gestrickt welches an sich selbst eingegebene Daten posted. Wenn ich nach der Eingabe der Daten diese per Submit absende,
    werden diese auch erfolgreich in die Datenbank eingetragen. Allerdings kann ich mit jedem Refresh der Seite den gleichen Datensatz erneut eintragen. Dies wollte ich mit unset($_POST) abfangen - leider erfolglos.

    unset($_POST) ruft nicht beim Browser zurück um ihm zu sagen: "Lösch mal die Post-Daten". Es gibt auch keine andere Methode dies zu tun.

    Kann mir jemand sagen wie ich dieses Problem beheben könnte?

    Es gibt mehrere Möglichkeiten. Hier zwei davon:

    • Sende dem Client nach erfolgreichem Eintragen eine Weiterleitung mittels Location-Header auf eine ungefährliche Seite.
    • Gib dem Formular einen eindeutigen Wert mit auf den Weg, den du dir auch auf dem Server merkst. Wenn die POST-Daten erfolgreich eingetragen wurden, markierst du den Wert als erledigt und weist weitere Versuche mit diesem Wert ab.

    echo "$verabschiedung $name";

    1. Danke dedlfix, werde es mal versuchen.

      Grüße
      Tolwin

  2. Moin!

    habe ein Formular gestrickt welches an sich selbst eingegebene Daten posted. Wenn ich nach der Eingabe der Daten diese per Submit absende, werden diese auch erfolgreich in die Datenbank eingetragen. Allerdings kann ich mit jedem Refresh der Seite den gleichen Datensatz erneut eintragen. Dies wollte ich mit unset($_POST) abfangen - leider erfolglos.

    Der Reload einer POST-Ergebnisseite (mit den Formulardaten im HTTP-Request-Body) ist identisch zum Reload einer GET-Ergebnisseite (mit den Formulardaten im HTTP-Request-Header und sichtbar in der URL-Zeile).

    Daraus folgt: Wenn du verhindern willst, dass eine POST-Ergebnisseite neu geladen werden kann, und dabei die gleichen Daten immer wieder schickt, mußt du entweder verhindern, dass der Browser auf dieser Seite stehenbleibt (mit Redirect zu einer ungefährlichen Seite), oder programmtechnisch abfangen, dass die Daten mehrfach verarbeitet werden.

    Der Redirect ist dabei wesentlich simpler zu programmieren.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi Sven,

      danke für den Hinweis... werde es versuchen.

      Grüße
      Tolwin