Hallo
Also zum Fomular-löschen:
Du hast in deinem Script die Reihenfolge:
-Formular erstellen und Variablen eintragen
-Wenn möglich Email senden
-Variablen löschen
Du musst es aber so machen:
-Wenn möglich Email senden
-Falls Email gesendet Variablen leeren (nicht löschen)
-Formular erstellen und Variablen eintragen
Oder anders ausgedrückt: Wenn das Formular erst mal geschrieben ist, nützt das Variablenlöschen auch nichts mehr.
Und nun zur Spamsicherheit:
In deinem Script gibt es drei Probleme:
-
Die Aufgabe muss für einen Computer schwer zu lösen sein. Stelle die Zahl deshalb als Zahlwort (auch nicht sicher) oder noch besser als Bild oder Sprache dar.
-
Die Lösung darf nicht im HTML-Code auftauchen. Du könntest sie beispielsweise verschlüsselt in das hidden-Feld schreiben und beim Auswerten die Benutzereingabe auf die gleiche Weise verschlüsseln und dann vergleichen
-
Die Lösung muss nach dem Absenden ungültig werden. Das heißt: Wenn das Formular ein zweites mal mit gleicher Lösung und gleichem hidden-Feld abgesendet wird, wird keine Mail gesendet. Um das hinzukriegen musst du in einer Datei oder Datenbank auf dem Server speichern, welche Lösungen zur Zeit gültig sind.
Grundsätzlich sollte man bedenken: Wenn einer effektiv spammen will, nutzt er ein Script. Und dieses Script hat keine Probleme damit, hidden-Felder zu lesen oder zu verändern, Felder ganz wegzulassen oder neue hinzuzufügen.
Und zuletzt noch: Falls du den Befehl mail() verwendest, schau dir auch die Sicherheitshinweise in [FAQ:2435], Abschnitt mail() an.
Gruß Johannes