Tutorials
[ Zurück ]


Rechenaufgaben-Captcha mit PHP


Bei manchen Captchas gibt es ja das Problem, dass Textbrowser die Grafiken nicht anzeigen. Deswegen muss aber nicht auf ein Captcha verzichten. Es gibt die Möglichkeit via PHP eine Rechenaufgabe ausgegen zu lassen und der User dann das richtige Ergebnis ins Captchafeld eintragen muss. Es werden also keine Grafiken verwendet und ist somit auch für Textbrowserfreundliche HPs geeignet.


1. Die Rechenaufgabe
Wir definieren nun die beiden Zahlen der Rechenaufgabe die dem User gestellt wird. Man könnte auch mehrere Zahlen machen, aber bedenkt: Die Aufgaben müssen auch auf die Schnelle lösbar sein und deswegen mache das Beispiel hier nur mit einer Zahl zwischen 1 und 5.
<?php
$Zahl_1 = intval(rand(1, 5));
$Zahl_2 = intval(rand(1, 5));
?>

2. Einbau ins Formular

Vor dem Absenden Button wird eine Zeile eingefügt. Links schreiben wird die Rechenaufgabe rein:
Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?

Rechts daneben legen wir zwei Formularfelder an. Das erste stellt die eigentlich Rechnung dar. Das ganze soll nicht sichbar sein, deswegen wird als type hidden eingegeben. Die Rechnung selbst wird mit md5 verschlüsselt damit die Sicherheit noch weiter steigt und nicht einfach ausgelesen werden kann.
<input name="number" type="hidden" id="number"  value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/>

Daneben erstellen wir nun das Eingabefeld wo das Ergebnis eingetragen wird. Die beiden ID´s der Felder finden erst bei der Überprüfung eine Bedeutung, sind aber wichtig!
<input name="arithmetic" type="text" id="arithmetic" />

Das ganze könnte man noch ein bisschen aufmotzen und einen Text reinschreiben der beim Klicken wieder verschwindet:
<input name="arithmetic" type="text" id="arithmetic"
style="width:250px" onfocus="if(this.value=='Das Ergebnis bitte hier
hinein...')this.value=''" onblur="if(this.value=='')this.value='Das
Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier
hinein..."/>


3. Überprüfung ob die Aufgabe richtig gelöst wurde

Der Code überprüft nun ob das Ergebnis stimmt und wirft bei einem falschen Ergebnis einen Fehlertext aus. Wenn das Ergebnis richtig eingetragen wurde, läuft das weitere Script ganz normal weiter.
<?php
if($_GET['action'] == "send")
{
if($_POST['number'] != md5($_POST['arithmetic']))
{
$err_text .="Die Rechenaufgabe wurde falsch gel&ouml;st!";
}
?>
Noch Fragen? Einfach eine cwmail an mich oder in die Comments posten, danke!

Erstellt:12.07.09 15:51
Autor: melonenfans

Letzte Änderung:
Geändert von:

Bewertungen:0
Bewertung:

Freigeschaltet: Ja
Views 3310

Klicke einfach auf einen Stern!
Wollen Sie wirklich das Tutorial löschen?
Wollen Sie wirklich dieses Tutorial zulassen?
Betreff: Report tutorial [id = 125] !
Absender:
Kommentar:
Wollen Sie wirklich dieses Tutorial zulassen?
Absender:
Kommentar:
Folgende User sind hier gerade aktiv:
-

ANZEIGE