PHP: Wie leere ich ein Formular?

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.

Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

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.

Woher ich das weiß:Berufserfahrung – mit dem Internet verbunden seit 1993

illegame 
Beitragsersteller
 26.02.2024, 19:08

Wo muss ich den Header genau hinschreiben? Bin gerade bisschen zu inkompetent dafür 😅

threadi  26.02.2024, 20:26
@illegame

Vor jeder anderen Ausgabe. Und am besten direkt nach dem Speichern der Daten.

Schicke als Antwort auf das Absenden (POST) nicht direkt die Bestätigungsseite, sondern einen Redirect auf diese, also Header("Location: https://....");

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin

illegame 
Beitragsersteller
 26.02.2024, 19:16

Wo muss ich den Header genau hinschreiben? Bin gerade bisschen zu inkompetent dafür 😅

iQa1x  27.02.2024, 07:56
@illegame

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.