aktualisierung eines formulars verhindern

tagchen zusammen,

ich suche nach einer möglichkeit, wie ich es verhindern kann, dass benutzer abgesendete formulare nochmal aktualisieren können und somit ein doppelter datensatz, bzw. eine doppelte mail entstehen würde.
ich hab’ sofort an PHP gedacht, nur wie sollte ich das vergleichen oder abfragen?

weiß da jemand was?

Nils aka XraYSoLo

Also ne Idee hätte ich, mach es doch einfach so, dass beim korrekten Absenden der eMail ein Cookie gesetzt wird, oder du beginnst eine Session, das/die bestimmt, dass der User nicht mehr auf das Formular zugreifen kann.

Deaktivier den Send Button nach dem Absenden.
Oder mach diesen Button:

<input id="Send" type="submit" value="Abschicken">
 
<script type="text/javascript">
<!--
var Sekunden = 10;
var Buttonbeschriftung = "Abschicken";
 
document.getElementById('Send').disabled = true;
 
for(i = 1; i <= Sekunden; i++)
{
    window.setTimeout("ButtonAktualisieren(" + i + ")", i*1000);
}
 
window.setTimeout("ButtonFreigeben()", Sekunden*1000);
 
 
function ButtonAktualisieren(VergangeneSekunden)
{
    if(VergangeneSekunden == Sekunden)
    {
        document.getElementById('Send').value = Buttonbeschriftung;
    }
    else
    {
        Restsekunden = Sekunden-VergangeneSekunden;
        document.getElementById('Send').val
ue = Buttonbeschriftung + " (" + Restsekunden + ") ";
    }
}
 
 
function ButtonFreigeben()
{
    document.getElementById('Send').disabled = false;
}
//-->
</script>

der wird erst nach einer gewissen zeit aktiviert…

@netzschleicher, das ist nicht vorteilhaft, der user soll das formular immer sehen können.
@dw8, auch das ists nicht, was ich mir vorgestellt hab’.

die funktion ist ja immernoch im browser vorhanden. meinetwegen soll der user aktualisieren, sooft er will, NUR darf es KEINE WEITERE AKTION mehr geben.

Nils aka XraYSoLo

Moin,

setzt doch nach dem absenden einfach eine session variable und mach ne isset prüfung um den sql insert !

bsp.

[PHP]
if(isset($_POST[‚sender‘]))
{
$_SESSION[‚schon_gesendet‘] = true;
}

if(!isset($_SESSION[‚schon_gesendet‘]))
{
// Hier Insert SQL etc.
}
[/PHP]

Ist ja ganz einfach:

mach es so wie bei einer umfrage. Das ist auch ein Formular, wenn man es einmal benuzt hat kann man es zwar nocheinmal benuzern, aber es wird nicht mehr gzählt…

du bist schlau…die funktion, bzw. den mechanismus such’ ich ja…

Nils aka XraYSoLo

Wenn es nur Darum geht, dass es nicht bei aktualisieren neu gezaehlt werden soll, dann muesste es doch reichen, wenn du eine Spalte mit der IP machst, denn beim neuladen waehlt man sich ja auch nicht erneut ein, fuer den kurzen Zeitraum sollte es reichen.

wo is das Problem… Speicher die IP des Useres in einer Datenbank… Dann kannst du mit ner einfachen if/else überprüfen, ob die IP schon in der db steht, bzw. ob der User das Formular schonmal abgeschickt hat…
Gruß, Fredmonster!

na ja, zwar nicht die ergebnisse, die ich mir erhofft hatte, aber immerhin etwas.

Nils aka XraYSoLo

Location: Header auf ne andere seite.

genau, sowas wollt’ ich, danke.

Nils aka XraYSoLo