Es ist häufig so, dass wenn man ein Kontaktformular nutzt, dies auch oft genug von Bots für Spam-Nachichten genutzt wird. Die häufigste Lösung, die im Internet dann vorgeschlagen wird, ist der so genannte Captcha-Code. Man gibt ein paar Zeichen ein, die auf dem Bild zu sehen sind und die Seite überprüft, ob der eingegebene Code stimmt.
Von meiner Mutter und anderen älteren Menschen weiß ich, dass manche Leute immer wieder Probleme haben, den Code richtig zu lesen. Warum also nicht mal einen anderen Weg versuchen?
Ein anderer, aus meiner Sicht schönerer Weg, ist die Untersuchung der E-Mail-Adresse, ob diese stimmen kann und das will ich hier kurz darlegen, wie das geht.
Zuerst überprüfen wir, ob alleine von der Zeichenlänge und der gewählten Zeichen her, die E-Mailadresse gültig sein kann:
In dem Skriptteil werden natürlich teilwiese auch doppelt abgefragt, aber ich geh da nach dem Motto: Doppelt hält besser!
Als zweites überprüfen wir nun ob die Domain überhaupt existiert. Dabei greifen wir auf die PHP-Funktion checkdnsrr zurück:
Natürlich ist auch dies keine Möglichkeit, um 100% Spam zu vermeiden, aber es hält 99% mindestens ab.
Von meiner Mutter und anderen älteren Menschen weiß ich, dass manche Leute immer wieder Probleme haben, den Code richtig zu lesen. Warum also nicht mal einen anderen Weg versuchen?
Ein anderer, aus meiner Sicht schönerer Weg, ist die Untersuchung der E-Mail-Adresse, ob diese stimmen kann und das will ich hier kurz darlegen, wie das geht.
Zuerst überprüfen wir, ob alleine von der Zeichenlänge und der gewählten Zeichen her, die E-Mailadresse gültig sein kann:
PHP:
//Erst die Länge der E-Maialdresse überprüfen:
if (strlen($mail) > 255) {
$valid_address = false;
//Dann ob PHP es als eine gültige E-Mailadresse bestätigen würde
} elseif (function_exists('filter_var') && defined('FILTER_VALIDATE_EMAIL')) {
$valid_address = (bool) filter_var($mail, FILTER_VALIDATE_EMAIL);
//Und sonst ob die Zeichenabfolge stimmen kann. Also auch ob nur Buchstaben und Zahlen nach dem @ verwendet werden.
} else {
if (substr_count($mail, '@') > 1) {
$valid_address = false;
}
if (preg_match("/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i", $mail)) {
$valid_address = true;
} else {
$valid_address = false;
}
}
Als zweites überprüfen wir nun ob die Domain überhaupt existiert. Dabei greifen wir auf die PHP-Funktion checkdnsrr zurück:
PHP:
if ($valid_address) {
$domain = explode('@', $mail);
if (!checkdnsrr($domain[1], "MX") && !checkdnsrr($domain[1], "A")) {
$valid_address = false;
}
}
Natürlich ist auch dies keine Möglichkeit, um 100% Spam zu vermeiden, aber es hält 99% mindestens ab.