daten nur einmal in db schreiben
christoph rey
- datenbank
hallo allerseits
was mich am meisten irritiert ist, dass ich keinen eintrag bezüglich meines problems finde - entweder mach ich was komplett falsch oder dann versteh ich die welt nicht mehr.
ich habe ein formular, das bei eingabe und submit in eine db schreibt. im gleichen formular lese ich den inhalt der db aus, d.h. was erfasst wurde wird gleich wieder ausgegeben.
das ganze funktioniert einwandfrei, das problem ist, wenn jemand den refresh button vom browser anklickt, schreibt es den letzten eintrag automatisch wieder in die db. wenn ich also die eingabe mache, auf submit klicke und dann noch 2 mal auf refresh klicke schreibt es den eintrag 3 mal in die db.
ich habs schon mal raufgeladen, damit jemand mir evtl. das problem ansehen, respektive mir eine lösung geben kann. die seite ist unter
http://www.superfreak.ch/wa_vam/veran_anmeldung.asp
den code dazu findet ihr unter
http://www.superfreak.ch/wa_vam/code.doc
vielen dank für einen tip.
gruss christoph
Hallo,
werte deine daten gleich zu beginn der seite aus und trage diese in die db ein...
bei erfolg machst du einen redirect auf eine neue seite bei fehler auf die eintragseite mit eventuellen anmerkungen für den user...
ein redirect funktioniert aber nur, wenn noch keine daten an den browser geschickt wurden...also gleich am anfang vor jeglichem standard html auswerten
Odium
Hi,
das ganze funktioniert einwandfrei, das problem ist, wenn jemand den refresh button vom browser anklickt, schreibt es den letzten eintrag automatisch wieder in die db. wenn ich also die eingabe mache, auf submit klicke und dann noch 2 mal auf refresh klicke schreibt es den eintrag 3 mal in die db.
ja, weil das entsprechende Script dann auch mehrfach ausgeführt wird und damit die Aktionen (SQL Insert) wiederholt.
Wenn du Odiums Variante mit dem Redirect umgehen möchtest, bleibt dir nichts anderes übrig, als vor dem Eintrag in die DB zu prüfen ob die Daten schon mal eingetragen wurden.
Das kannst du machen:
Ich kenne deine persönlichen Bedürfnisse nicht und weiß nicht, welche Variante (Odiums oder meine) in deinem Fall besser wäre
Ein was wichtiges möchte ich aber noch betonen bei Datenbankoperationen mit User-Input:
Sicherheitsrisiko SQL-Injection!!
"All input is evil until proven otherwise"
mehr Infos und Gegengifte findest du u.a. auf www.aspheute.com
Viele Grüße, Frank