Spamsichere Formulare mit PHP
geschrieben von Matthias am Sonntag, den 26. April 2009Ich bin gerade mal wieder dabei meine Kontaktformulare spamsicher zu machen. Captchas finde ich nicht wirklich benutzerfreundlich, deshalb fällt diese Möglichkeit weg.
Einen ersten Anhaltspunkt fand ich bei Paul Silver (Link). Er stellte fest, dass viele Spamer in den automatisch ausgefüllten Formularen spezielle Wörter verwenden: Content-Type, cc oder bcc. Enthält nun ein abgeschicktes Formular solche Phrasen, wird es verworfen.
Um einen weiteren Schutz zu haben, hatte ich mir überlegt, noch Input-Felder einzubauen. Diese sollen per CSS auf nicht sichtbar gesetzt werden. Wenn nun eines dieser Felder im abgeschickten Formular einen Wert enthält, weiß ich, dass es sich um einen Spamversuch handelt. Ein normaler Internetnutzer sieht ja das Feld nicht und kann es folgich auch nicht ausfüllen.
Hier mein Beispielcode:
function checkforspam() {
if ( preg_match( “/bcc:|Content-Type:/i”, implode( $_POST ) ) ){
return ‘Y’;
} else {
return ‘N’;
}
}if (checkforspam() == ‘N’ & $_POST['emailspam'] == “” & $_POST['namespam'] == “”) {
$message = “”;
foreach ($_POST as $key => $value) {
$message .= $key.”: “.$value.”\n”;
}
Die Input-Felder emailspam und namespam müssen natürlich im HTML-Formular eingebaut und mit dem Style “display: none” versehen werden.
Es wird sich zeigen, wie lange diese Methode funktioniert. Ich werd auf jeden Fall dranbleiben und ggf. updaten
Geschrieben in PHP | Keine Kommentare