Emailformular mit Spam-Schutz

Auch hiermit schickt ihr mir eine Email, also schreibt was nettes, damit ich ein "Helpers High" bekomme.

Wiederholen Sie
folgenden Code
(Dies verhindert SPAM)
   
Name
Email
Nachricht

 

 

In dieses Emailformular wurde ein Spamschutz eingebaut. Erstellt euch eure eigenen Bilder mit anderen Buchstaben und passt den Code auf dieser Seite entsprechend an. (Es ist nicht erlaubt meine Bilder zu nehmen.). Bedenkt, dass ihr mit diesem Script sehbehinderte Menschen außen vor lasst, aber ich habe ja auch noch eine andere Lösung und zwar ein Emailformular mit Spamschutz und Rechenaufgabe, das auch auf PHP und Javascript basiert.

Das Script besteht aus Javascript und PHP.

<script type="text/javascript">
function eingaben_ueberpruefen(){
if (document.Form.eingabe.value.length != 5){
alert("Bitte geben Sie den Code ein!");
document.Form.eingabe.focus();
return false;
}
else
return true;
}

function RND(){
Zufall = Math.round(Math.random()*11+1);
document.Form.code.value=Zufall;
return Zufall;
}
</script>

Javascript

Hier wird die Funktion namens eingaben_ueberpruefen() definiert, welche im Formular beim klicken onSubmit aufgerufen wird.

In diesem Beispiel muss das Formular die Bezeichnung "Form" bekommen. Das Feld, in dem man die Zeichen eingibt muss die Bezeichnung "eingabe" bekommen.

Die Anzahl der einzugebeneden Zeichen sind hier 5. Siehe unten die Schlüssel bestehen alle aus 5 Buchstaben.

RND()
Diese Funktion erzeugt einen Zufallswert von 1 bis 12. Es gibt insgesammt 12 Schlüssel oder 12 Bilder. Dieser Wert wird dem versteckten Formularfeld namens code zugewiesen.

<body onLoad="document.Form.eingabe.focus();"> Javascript im Bodytag, der Cursor wird auf das Eingabefeld gesetzt.

<form name="Form" action="formailer.php" method="post" onSubmit="return eingaben_ueberpruefen(this.form)">

 

Beim Abschicken (onSubmit) wir die Javascript Funktion aufgerufen, welche überprüft ob im Feld "eingabe" 5 Zeichen eingegeben wurden. Ist das nicht Fall wird false zurückgegeben und es wird nichts verschickt.

<input type=hidden name="code"> Verstecktes Feld, es bekommt seinen Wert von der Javascriptfunktion RND() siehe oben.
<script type="text/javascript">document.write('<img src="'+RND()+'A.gif" width=210 height=50>');</script> Per Javascript wird das Bild eingefügt. Es wird aus dem Wert von code und dem Namen des Bildes zusammengesetzt.
...weitere Eingabefelder.... weitere Eingabefelder, wie gehabt.
<input type=submit value="Senden"> und natürlich auch der Senden Button
</form>  

 

Die Überprüfung erfolgt wird auf der Seite formailer.php.

Email Funktion mit Spamschutz auf der Seite formailer.php

<?php

$email = $_POST["email"];
$UserName = $_POST["UserName"];
$nachricht = $_POST["nachricht"];

$dieMessage ="$UserName \n";
$dieMessage .= $nachricht;

if($_POST["eingabe"] !=""){
$eingabe = $_POST["eingabe"];
$eingabe = strtolower($eingabe);
$code = $_POST["code"];
}

 

$chluessel[1] = "fnpor";
$chluessel[2] = "tzuog";
$chluessel[3] = "hkllm";
$chluessel[4] = "oprst";
$chluessel[5] = "wwxsz";
$chluessel[6] = "ffcmy";
$chluessel[7] = "fkmvy";
$chluessel[8] = "xdfhj";
$chluessel[9] = "opwwj";
$chluessel[10] = "kmnpo";
$chluessel[11] = "ztzrr";
$chluessel[12] = "ufaxp";

// Spam-Schutz
if ($chluessel[$code] == $eingabe) {

mail("mail@on-design.de", "PHP Tipp Email", $dieMessage, "From:$email");
echo "Die Nachricht wurde verschickt";
}
else {
echo "Falsche Eingabe, oder bist du ein Spamprogramm?";
}

?>

Zu Anfang werden die Formularfelder, die mit Post versendet wurden empfangen, wie gehabt.

 

Dann wird überprüft, ob im Feld eingaben ein Wert eingetragen wurde. Alle Buchstaben werden in Kleinbuchstaben umgewandelt und der PHP Variablen $eingabe übergeben. Außerdem wird der Wert des Formularfeldes code der PHP Variablen $code übergeben.

 

Es folgt ein Array, welches alle Zeichen der Bilder enthält und zwar in der gleichen Reihenfolge, wie es in den Bildern zu sehen ist.

Dann wird überprüft, ob der Wert des Arrayelementes mit dem Wert des Bildes übereinstimmt.

ist das der Fall, wir die Email verschickt und per Echo ein Hinweise ausgegeben.

Ist das nicht der Fall, kommt der Hinweis, das hier was nicht stimmt.


Hier nochmal die Erklärungen zur mail Funktion:

Auf dieser PHP Seite wird  nun die Email verschickt. Diese Seite kann man auch als Bestätigungs Seite anlegen, mit einem Text wie
echo "Vielen Dank $UserName ihre Nachricht wurde verschickt."

Zu Anfang müssen allen Formularfelder mittes _POST an die PHP Seite übergeben werden. Anschließend werden alle User-Eingaben mit Verkettungsoperator Verkettungsoperator .= an die Variable $dieMessage übergeben.

Dann folgt die Email Funktion welche 4 Parameter hat, die wie immer mit Komma getrennt werden
mail("Empfängermail", "Betreff","Botschaft", "From: Absendermail")
Die Funktion mail() gibt bei Erfolg den Wert true und ansonsten den Wert false zurück.


Session | Übersicht  

 

 

Übersicht