HTML Form beim aktualisieren der Seite trägt sie die daten nochmal in die Datenbank ein, wie geht das weg?
Also ich hab eine Form in HTML und damit will ich sachen in einer SQL datenbank eintragen, funktioniert alles gut. Aber wenn ich die Seite aktualiesiere werden die eingeben Daten aus dem input nochmal in die Datenbank eingetragen. Wie kann ich das Wegmachen?
<form class="tester" action="index.php" method="post">
<?php include 'class_SQLAccount.php'; ?>
<input class="AccountSystemAddInput" placeholder="Vorname" type="text" name="box_vorname">
<input class="AccountSystemAddInput" placeholder="Nachname" type="text" name="box_nachname">
<input class="AccountSystemAddInput" placeholder="Email" type="text" name="box_email">
<input class="AccountSystemAddInput" placeholder="Passwort" type="text" name="box_password">
<input class="AccountSystemAddInput" placeholder="Passwort wiederholen" type="text" name="box_retrypassword">
<br>
<input class="AccountSystemSubmit" type="submit" name="btn_AddUser" value="Hinzufügen">
<p class="ErrorText"><?php print $var_errortext ?></p>
<br>
</form>
3 Antworten
Das ist natürlich grundlegend normal, weil HTTP zustandslos ist.
Ausweg wäre z.B. eine Session zu nutzen und zu schauen, ob das Formular bereits abgeschickt (und in die DB eingetragen) wurde. Sollte es möglich sein in einer Session das gleiche Formular mehrfach zu verwenden, dann würdest DU Dich von der SID auf eine Transaktions-ID verlegen.
So oder so muß die Logik dafür in Dein Skript.
-----
P.S.: Da Du unter anderem die E-Mail als Feld hast udn diese h9offentlich einzigartig sein sollte, kannst Du auch einfach ein unique constraint in der DB setzen. Weitere Eintragsversuche werden dann mit Fehler abgewisen.
Du kannst nicht verhindern, daß die Daten nochmal neu an Dein Script übertragen werden.
Daher musst Du innerhalb Deines Skriptes testen, ob der Datensatz schon übermittelt wurde.
Hm, dann sollte man aber einen PUT request verwenden. In der REST Nomenklatur geht man bei einem POST davon aus, dass doppelt gesendete Daten dann auch doppelt drin stehen.
Ich hab einfach beim uploaden die Seite neu laden lassen. Das funktioniert gut. Und länger dauert es dadurch auch nicht.
Du kannst z. B. bei der Formularerstellung ein eindeutiges Token mitschicken, wenn der Datensatz selber nicht schon durch die Formulardaten einen Primärschlüssel mitbringt. Das speicherst Du in der Datenbank mit ab, dann weisst Du, ob ein Datensatz schon gespeichert wurde. Oder Du verwaltest mit Cookies eine Session und merkst Dir die letzte Aktion.
In dem du in der PHP Datei prüfst ob der Eintrag bereits vorhanden ist.
Ansonsten Datenbank abfragen, obDaten in der Datenbank sind. Oder du löschst per JavaScript nach dem ersten Senden die Daten aus den Formularfeldern