PHP: Wie leere ich ein Formular?
Hallo!
Ich möchte gerne mein PHP Formular nach dem Absenden an eine Datenbank leeren. Bisher ist es so, dass wenn ich das Formular ausfülle und absende, alles in die Datenbank geschrieben wird. Aktualisiere ich die Seite aber im Anschluss wird exakt das gleiche noch Mal in die Datenbank geschrieben. In das soll nicht passieren. Wenn ich die Seite aktualisiere soll einfach nichts in die Datenbank geschrieben werden.
Im voraus vielen Dank!
MfG
3 Antworten
Dazu nutzt man üblicherweise zwei Dinge:
Du setzt in deinem Formular ein Hidden-Feld, in welchem eine Zufallszahl oder ein zufälliger Hash steht. Beim Speichern speicherst du diesen Wert entweder gleich mit zu dem Daten Satz dazu (eigentlich unnötig) oder (besser) du fügst ihn nur in der Session in einem Array jeweils hinten dran. Bei jedem Absenden eines Formulars überprüfst du nun, ob der zufällige Wert schon in deinem Session-Array enthalten ist. Wenn ja, dann wurde das Formular doppelt abgesendet und du gibst einen Fehler aus. Wenn nein, dann speicherst du das Formular und fügst den Wert wieder ans Array an.
Zusätzlich leitest du (wie von anderen schon geschrieben) nach dem erfolgreichen Absenden des Formulars noch mal auf einen andere Seite weiter. Beim Speichern eines Profils kann man dann bspw. direkt wieder auf das jeweilige Profil weiterleiten.
Wenn du die Daten erfolgreich gespeichert hast, leite den Nutzer per
header("Location: http://www.google.de");
weiter. Als Ziel kannst Du eine Danke-Seite oder auch die Seite mit dem Formular selbst angeben. Das wäre dann leer.
Schicke als Antwort auf das Absenden (POST) nicht direkt die Bestätigungsseite, sondern einen Redirect auf diese, also Header("Location: https://....");
Wo muss ich den Header genau hinschreiben? Bin gerade bisschen zu inkompetent dafür 😅
Wenn du die Daten in die DB speicherst, sendest du als Antwort nicht direkt die Bestätigungsseite als HTML, sondern leitest auf eine andere HTML/PHP-Datei (oder die gleiche mit anderen GET Variablen, ?status=ok oder so) weiter, die dann erst die Bestätigungsseite anzeigt.
Wo muss ich den Header genau hinschreiben? Bin gerade bisschen zu inkompetent dafür 😅