Aktualisieren - doppelter Eintrag verhindern

kekskruemel

Angesehenes Mitglied
Hallo,

ich suche derzeit nach einer guten Lösung um auf einer Seite in php zu verhindern, dass durch Aktualisieren erneut ein Datenbankeintrag durchgeführt wird und erneut die Email an eine entsprechende Person gesendet wird.

Wie kann man das am Besten lösen?

Danke für eure Ideen und Hilfen
 
Oft reicht es schon, wenn man nach dem Eintragen weiterleitet auf eine Dankeseite o.ä. - diese kann gefahrlos aktualisert werden.

Ansonsten könntest du im Formular noch ein hidden input einbauen, dessen Wert nach dem Datenbankeintrag auch einer entsprechenden Sessionvariable zugeordnet wird. Anhand der Sessionvariable kann das Script dann erkennen, ob der Eintrag bereits erfolgt ist
 
Ist nicht so elegant, aber ich schaue immer, ob in den letzten x Inserts ein Eintrag mit identischer IP-Adresse und den selben y Zeichen (substr()) existiert.
 
Hallo,

die Weiterleitungs-Lösung von Jörg ist in meinen Augen die einfachste und beste.

Nachdem du die Daten in die Datenbank geschrieben hast (oder deine Email verschickt), einfach per

CODE
<?
header('Location:danke.html');
?>



auf eine "Danke"-Seite weiterleiten. Dort sind die POST-Daten dann nicht mehr verfügbar und die Seite kann ohne Probleme aktualisiert werden.

Grüße
Oli
 
Der Aufruf von header() muss erfolgen, bevor Teile des HTML-Dokumentes ausgegeben werden. Auch eine Leerzeile vor dem "<?php" zählt hierbei als Ausgabe
 
QUOTE (kekskruemel @ Fr 12.09.2008, 07:04)ich suche derzeit nach einer guten Lösung um auf einer Seite in php zu verhindern, dass durch Aktualisieren erneut ein Datenbankeintrag durchgeführt wird und erneut die Email an eine entsprechende Person gesendet wird.

Ich muß gestehen, ich hatte das Problem noch nie.

Da das aber nicht an meiner PHP-Abstinenz liegen kann:

(1) <form method='POST'> nutzen, dann stehen die Parameter nicht in der Url. Ist nichts angegeben, wird GET verwendet, damit führt auch ein Return in der Adresszeile zu einem Zweiteintrag.

(2) Auf die Spalte mit der Mail eine Unique-Einschränkung draufpacken. Dann muß man bloß noch den Fehler beim zweiten Speichern abfangen.
 
Zurück
Oben