Emailformular mit Spam-Schutz (Rechenaufgabe)

 

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

Tragen sie das Ergebnis der Rechenaufgabe hier ein
(Dies verhindert SPAM)
   
Name
Email
Nachricht

 

 

In dieses Emailformular habe ich einen Spamschutz eingebaut, der auf einer kleinen Rechenaufgabe basiert. Ich weiß nicht genau wie sicher es ist, bzw. wie gut Spamprogramme mittlerweile auf solche Aufgaben, reagieren. Ein weiterer Vorteil bei dieser Funktion ist, dass Leute, die nicht rechnen können, einen nicht mit Emails belästigen. Wenn ihr das Niveau noch weiter erhöhen wollt, erhöht einfach die Zahlen oder stellt schwierigere Aufaben... Wurzel ziehen etc. :)

Das Script besteht aus Javascript und wird auf der mailer.php mit PHP ausgewertet.

<script type="text/javascript">
function wert1(){
Zufall = Math.round(Math.random()*20+20);
document.Form.alter.value=Zufall;
return Zufall;
}

function wert2(){
Zufall = Math.round(Math.random()*18+1);
document.Form.firma.value=Zufall;
return Zufall;
}
function aufgabe(){
Zufall = Math.round(Math.random()*2);
document.Form.status.value=Zufall;
if(Zufall==1){
return "+";
}else{
}
return "-";
}
</script>

Javascript

Das Formular muss die Bezeichnung "Form" haben. Das Feld, in dem man das Ergebnis eingibt, muss die Bezeichnung "eingabe" haben.

 

wert1()
Diese Funktion erzeugt einen Zufallswert von 20 bis 40. Sobald die Funktion aufgerufen wird, wird dieser Wert zurückgegeben und dem verstecktem Feld "alter" zugewiesen. Ich habe es "alter" genannt, um die Bedeutung zu verschleiern. Es ist die erste Zahl der Rechenaufgabe.

wert2()
Hiermit wird auf die gleiche Art dem Feld "firma" ein Wert zugewiesen. Das ist die zweite Zahl der Rechenaufgabe.

aufgabe()
Hier wird ein Zufallswert von 0 oder 1 erzeugt. Der Wert wird dem verstecktem Feld "status" zugewiesen. Durch diesen Wert wird bestimmt, ob die Aufgabe mit plus oder minus gerechnet wird.

 

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

<form name="Form" action="mailer.php" method="post">

 

Das Formular sendet die Daten mit POST an die Seite "mailer.php".
<input type=hidden name="alter">
<input type=hidden name="firma">
<input type=hidden name="status">
Die versteckten Felder bekommen ihre Werte von den Javascript Funktionen siehe oben, siehe nächste Reihe.
<script type="text/javascript">document.write(wert1()+' '+aufgabe()+' '+wert2()+' =');</script> Per Javascript wird die Rechenaufgabe erzeugt. Die 3 Funktionen wert1(), wert2() und aufgabe(), weisen den versteckten Feldern die Werte zu und außerdem wird mit document.write die Aufgabe erzeugt.

<input name="UserName" type="text" id="UserName" size="40" maxlength="40" class="textfeld">

<input name="email" type="text" id="email" size="40" maxlength="40" class="textfeld">

<textarea name="nachricht" cols="40" rows="5" wrap="PHYSICAL" id="nachricht"></textarea>

<input type=submit value="Senden">

weitere Eingabefelder, wie gehabt.
</form>  

 

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

Email Funktion mit Spamschutz auf der Seite mailer.php

<?php

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

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

// Spam-Schutz
$eingabe = $_POST["eingabe"];
$wert1 = $_POST["alter"];
$wert2 = $_POST["firma"];
$aufgabe =$_POST["status"];

if($aufgabe){
$wert = $wert1+$wert2;
}else {
$wert=$wert1-$wert2;
}

if ($wert == $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? <a href='email1.htm'>Willst du es nochmal versuchen? </a>";
}

?>

Zu Anfang werden die Formularfelder, die mit Post versendet wurden empfangen. Anschließend werden die User-Eingaben mit Verkettungsoperator Verkettungsoperator .= an die Variable $dieMessage übergeben. Die Werte von $dieMessage werden später verschickt.

Die Eingabe wird der Variablen $eingabe übergeben.
alter wird $wert1
firma wird $wert2
status wird $aufgabe
übergeben.
$aufgabe hat nun den Wert 0 oder den Wert 1 bekommen. In der if Struktur wird überprüft ob $aufgabe den Wert 1 hat. (boolscher Wert). Ist das der Fall, wird $wert1 und $wert2 addiert und der Variablen $wert zugewiesen.
Andernfalls wird $wert2 von $wert1 subtrahiert und $wert zugewiesen.

Entspricht $wert der $eingabe wird die Email verschickt und per Echo ein Hinweis ausgegeben.

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

 

Die Email Funktion hat 4 Parameter, die 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 Ein Tipp von www.pastorpixel.de

 

 

Übersicht