Formmailer Verzögerung
Paul Brunner
- php
Hallo zusammen,
ich habe ein Problem bei dem ihr mir hoffentlich helfen könnt.
Um bei Leuten mit dem nervösen Zeigefinger zu vermeiden das eine Mail mehrfach abgeschickt wird möchte ich unmittelbar nach dem drücken des send-Buttons ein das Formular durch ein "sending-Fenster" ersetzen dann erst den Mail-Prozess ausführen und schließlich nach erfolgtem Versand eine "erledigt-Fenster" anzeigen.
Das Formmailer-Prinzip samt Script ist bekannt und funktioniert.
Hier der Code der vom Formular aufgerufen wird.
<?php
header("Location: sending.html");
sleep(3); /*simuliert die für den Mail-Versand benötigte Zeit*/
header("Location: done.html");
?>
Ich würde erwarten das zunächst die Datei sending.html für drei Sekunden zu sehen ist und anschließend die Datei done.html. Statt dessen passiert 3 sekunden nichts und dann erscheint gleich die "done". Wo ist mein Denkfehler?
Paul
Hi,
Ich würde erwarten das zunächst die Datei sending.html für drei Sekunden zu sehen ist und anschließend die Datei done.html. Statt dessen passiert 3 sekunden nichts und dann erscheint gleich die "done". Wo ist mein Denkfehler?
Dein Denkfehler ist, dass _ein_ Request exakt(!) _einen_ Response erfordert - nicht mehr und nicht weniger. Bei Scripts ist es gewöhnlich so, dass der Server wartet, bis es zu Ende ausgeführt wurde, und dann das Ergebnis komplett sendet (was u.U. auch notwendig sein kann, z.B. wenn mod_gzip verwendet wird).
Den Doppelklick kannst Du niemals nie nie nicht verhindern. Sorge dafür, dass das Script schneller abgearbeitet wird, oder starte (PHP-unabhängige) externe Programme, die im Hintergrund arbeiten, ohne dass Dein Script darauf wartet. Wie das mit PHP geht weiß ich nicht; zudem musst Du dieses Programm in einer anderen Sprache erstellen.
Cheatah
Hi Paul,
so kannst du Doppelsendungen nicht unterdruecken...
das script wird ja erst ausgefuehrt, wenn die Daten beim Server sind, und in der zeit kann der user ja nochn paar mal aufn knopf druecken, was die erneute uebermittlung startet..
MFG
Philipp