Marco: Sehr viel Spam von Kontaktformular

Beitrag lesen

Hallo zusammen

Ich  habe eine kleine Frage und zwar habe ich ein Kontaktformular auf verschidenen Seiten (von mir und von Kunden) welches ich in PHP geschrieben habe (siehe unten).

Nun erhalten die Kunden sehr viel Spam. Was kann ich dagegen tun?
Muss ich wirklich ein Feld einbauen wo man aus einer Grafik einen Code abschreiben muss um das Formular zu senden? Denke nicht das es
wirklich eine kundenfreundliche Lösung ist.

Was ich mich frage, hat mein PHP Script einen Fehler und es wird so für das Versenden oder macht sich wirklich jemand die Mühe und senden das Formular mit dem betätigen des OK-Button?

Hier mal das Script:

***************************

<?

//Formular spamsicher machen

function has_no_newlines($text)
{
   return preg_match("/(%0A|%0D|\n+|\r+)/i", $text);
}
//Pflichtfelder überprüfen
if (has_no_newlines($_POST['name'])) { include ("mailwrong.php");
echo "wrong!";
exit;
 }
if (has_no_newlines($_POST['email'])) { include ("mailwrong.php");
echo "wrong!";
exit;
 }
if (has_no_newlines($_POST['vorname'])) { include ("mailwrong.php");
echo "wrong!";
exit;
 }

// E-Mailadresse überprüfen ob sie gültig ist
if(!ereg("^([a-zA-Z0-9._-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$", $_POST['email'])) {

include ("mailadresse_wrong.php");
exit;
}

//Pflichtfelder überprüfen

if($_POST['name'] == "" or $_POST['email'] =="" or $_POST['kommentar'] =="")
{
include ("mailwrong.php");
exit;
}

//Aktuelle Zeit ermitteln

$zeitstempel = time ();
$zeit = date("H-"."i-"."s", $zeitstempel);

//Datum in Variablen schreibe
$tag    = date("d "); //aktueller Tag auslesen
$monat  = date("n");  //aktueller Monat
$jahr   = date(" Y"); //aktuelles Jahr

$monatde = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); //Umwandeln von Englisch in Deutsch
$datum  = $tag.$monatde[$monat-1].$jahr;

//E-Mail versenden

$EMail    =  "info@xxx.ch";
$titel    =  "Bemerkungen/Anfrage";

$mitteilung .= "Firma:".$_POST['name']."\n\n";
$mitteilung .= "Name:" .$_POST['vorname']."\n\n";
$mitteilung .= "Strasse: ".$_POST['strasse']."\n\n";
$mitteilung .= "PLZ/Ort: ".$_POST['plz']."\n\n";
$mitteilung .= "Telefon: ".$_POST['telefon']."\n\n";
$mitteilung .= "E-Mail: ".$_POST['email']."\n\n";
$mitteilung .= "Nachricht: ".$_POST['kommentar']."\n\n";

$mitteilung .= "--------------------------------------------------------------------------------------------------------\n";
$mitteilung .= "Die Nachricht wurde am "."$datum"." um "."$zeit"." Uhr"." gesendet\n";
$mitteilung .= "--------------------------------------------------------------------------------------------------------\n";

$header =  "From:$name<$email>\r\n".
   "Reply-To: $email\n".
   "X-Mailer: ".phpversion()."\n".
   "X-Priority: 1\n".
   "SMail-Priority: high";

$bool = mail($EMail, $titel, $mitteilung, $header);

include ("mailok.php");

?>

********************************

Kann mir jemand sagen, was ich besser machen kann oder hat jemand Tips damit ich endlich weniger Spam von diesen Formularen erhalte.

Freue mich riesig auf Eure Antworten und danke schon im voraus für Eure Hilfe!

Gruss Marco