Ohne Captcha Methode und eigentlich ganz einfach.
1. Timestamp in einem Input-Feld speichern
2. verstecktes Input-Feld, dessen Name-Attribut auf “mail” oder “email” setzen
3. eigentliche Input-Feld der E-Mail Adresse des Benutzers anderes Name-Attribute geben als “mail” oder “email”
$timestamp=$_SERVER['REQUEST_TIME']; <input type="text" value="<?php echo $timestamp; ?/>" name="zeitstempel" class="hidden" /> <input type="text" name="mail" class="hidden" /> <input type="text" name="meineEchteEmailAdresse" />
Spam-Bots suchen danach und füllen diese aus. Mit CSS ausblenden
.hidden{
display: none;
}
In der PHP-Datei, mit der Mail-Funktion die Differenz zwischen Request des Formulars und der PHP-Datei berechnen und in einer Bedingung abfragen.
// aktuellen Zeitstempel speichern
$zeitStempel = $_SERVER['REQUEST_TIME'];
/* Differenz von Kontakformular gelieferten Zeitstempel
* mit aktuell gespeicherten Zeitstempel berechnen
*/
$zeitDifferenz=$_POST['zeitstempel']-$zeitStempel;
$mailSpam=$_POST['mail'];
$mailRichtig=$_POST['meineEchteEmailAdresse'];
// Bedingung setzen
if($zeitDifferenz < 5 && !empty($mailSpam)){
// tue irgendwas
}
else{
mail(Deine Parameter eingeben);
}
Die Zeit könnt ihr variable setzen. Ein Spam-Bot versucht so schnell wie möglich das Kontakformular abzuschicken. Ein paar Sekunden müssten reichen. Wenn ein Benutzer wirklich was abtippt, müsste es länger dauern als 4-5 Sekunden.




