Ich denke, wir sind uns alle einig, dass Eric Jones, wer auch immer er ist, eine große Spam-Nervensäge ist. Zumindest dann wenn man ein Kontaktformular auf eigenen Webseiten bereitstellt und keinen Spamschutz, z. B. durch Captchas, im Einsatz hat.
Seit längerem werden alle unsere Websites andauernd mit E-Mails über unsere Kontaktformulare zugespammt, die mit „My name’s Eric and I just came across your website – blblubdomain.com – in the search results.“ beginnen. Ein ganzer Haufen Spam-Anfragen bombardiert uns auf diesem Weg ebenfalls. Wer eine einfache Möglichkeit für PHP-Formulare sucht um Schutz vor dieser Art Spam zu haben wird in diesem Artikel fündig!
Spamschutz ohne Captcha in PHP-Kontaktformular
Es gibt zwar kostenlose Captcha-Dienste, aber um diese einzubinden muss man sich definitiv mit diesen beschäftigen. Nicht nur mit der technischen Umsetzung, sondern auch mit der rechtlichen Seite. Man muss den Anbieter nämlich auch aus datenschutzrechtlicher Sicht nutzen dürfen. Noch dazu muss man bedenken, dass Seitenbesucher von Captchas genervt sind. Es gibt aber, zumindest wenn man ein einfaches Kontaktformular in PHP nutzt, eine andere einfache Möglichkeit um Spam zu vermeiden bzw. zu reduzieren.
Hierzu geht man wie folgt vor. Im Kontaktformular bzw. dem HTML-Teil des Formulars fügt man eine weitere Checkbox hinzu. Wie diese heißt ist im Grunde egal. Ich habe die Checkbox einfach „drop“ genannt, weil die Spam-Nachrichten gedropped werden sollen. Als „value“ habe ich „checked“ festgelegt.
Der Trick ist, dass diese Checkbox z. B. per Inline-CSS mit style=“display:none;“ oder im CSS-File für den Seitenbesucher ausgeblendet wird. Das könnte z. B. so aussehen:
1 2 3 4 5 6 |
<div style="display:none;" class="custom-control custom-checkbox" id="drop-outer"> <label class="form-check-label" for="drop"> <input type="checkbox" class="custom-control-input" id="drop" name="drop" value="checked" <?php if(!empty($_POST['drop'])){ echo 'checked'; } ?>/> Drop </label> </div> |
Zumindest dumme Bots werden diese Checkbox aber trotzdem „anhaken“ bzw. den Value setzen und dann das Kontaktformular bestätigen und abschicken wollen.
Das Wichtige ist nun im PHP-Teil des Kontaktformulares den Wert aus der neuen Checkbox „drop“, z. B. mittels $_POST[‚drop‘]!=“checked“, zu prüfen. Nur wenn dieser nicht gesetzt ist, wird das Kontaktformular per E-Mail verschickt:
1 2 3 |
if (!empty($_POST['mail']) && !empty($_POST['nachricht']) && $_POST['datenschutz']=="true" && $_POST['drop']!="checked") { /* send mail */ } |
Fazit zum Spamschutz ohne Captcha im Kontaktformular
Ein effektiver Spamschutz in einem Kontaktformular ist auch ohne Captchas möglich um endlich diese nervtötenden Spam-Mails von Eric Jones und seinen Freunden los zu werden. Natürlich könnte man auch umständlich andere Methoden nutzen und IPs von Spam-Bots ausfindig machen und per Apache blockieren, aber so geht es schneller und man hat erst einmal seine Ruhe.