HTML Form beim aktualisieren der Seite trägt sie die daten nochmal in die Datenbank ein, wie geht das weg?

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.

BetaFactory 
Fragesteller
 08.07.2020, 14:02

Ok, danke. Und wie geht das?

0
Neugierig1971  08.07.2020, 14:14
@BetaFactory

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.

0
CarltonSmith  08.07.2020, 14:12

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.

1
SamanthaI  08.07.2020, 14:13

Ansonsten Datenbank abfragen, obDaten in der Datenbank sind. Oder du löschst per JavaScript nach dem ersten Senden die Daten aus den Formularfeldern

0
BetaFactory 
Fragesteller
 12.07.2020, 16:34
@SamanthaI

Ich hab einfach beim uploaden die Seite neu laden lassen. Das funktioniert gut. Und länger dauert es dadurch auch nicht.

1

In dem du in der PHP Datei prüfst ob der Eintrag bereits vorhanden ist.

Woher ich das weiß:eigene Erfahrung