Captcha Abfrage für Formulare
Samstag, 24. März 2007 | Autor: Pr0g
Testformular für die Codeabfrage (Teil 2)
Um einen zusätzlichen Schutz gegen das automatisierte Ausfüllen des Formulars bieten zu können wird das Eingabefeld für den späteren Captcha Codes nicht mit einem festen Namen belegt, sondern eine zufällige Nummer an den eigentlichen Namen angehangen. Diese Nummer wird in einem verstecken Inputfeld namens captcha_input_nr beim Senden übertragen und zu Beginn ausgelesen.
Dann wird geprüft ob in das Feld für den Captcha Code eine Eingabe gemacht wurde, was auch bedeuten würden, dass das Formular abgesendet worden ist.
Sollte dies der Fall sein, so wird die Verbindung zur Datenbank hergestellt und anhand der Id, welche im versteckten Feld “captcha_hash” gespeichert wurde, der Code ausgelesen. Dieser wird dann mit der Eingabe des Captcha Codes verglichen. Da ich nicht zwischen Groß- und Kleinschreibung unterscheide, wird die Eingabe des Benutzers zuvor noch mit dem Befehl strtoupper() in Großbuchstaben umgewandelt. Sollte am Anfang des Captcha Script der Zeichensatz auch um Kleinbuchstaben erweitert worden sein, so muss die Funktion gelöscht werden, damit eine genaue Überprüfung stattfinden kann. Die geänderte Zeile sähe dann wie folgt aus:
if ($row['code'] == $_POST['captcha_code' . $captcha_input_nr]) {
Stimmt der Code, so wird der entsprechende Eintrag aus der Datenbank gelöscht und die normale Verarbeitung der Daten kann fortgesetzt werden. Andernfalls wird eine Fehlermeldung in die Variable $fehler geschrieben.
Sollte das Formular noch nicht abgeschickt worden sein, oder ist ein Fehler aufgetreten, so wird es angezeigt.
Hier wird nun zuerst die Id für das Captcha erzeugt. Dies geschieht mit Hilfe der Hash Funktion md5() und der Funktion time(). Die Id wird in der Variable $captcha_hash gespeichert. Direkt danach wird eine Zufallsnummer für das Eingabefeld des Captcha Codes generiert und in die Variable $input_nr geschrieben.
Nun könnten die normalen Eingabefelder des Formulars folgen und eine Fehlerausgabe im Fehlerfall stattfinden.
Als nächstes wird die eben ermittelte Id in ein verstecktes Eingabefeld geschrieben, damit sie beim Absenden des Formulars mitgesendet wird und bei der Überprüfung zum Auslesen des passendes Codes genutzt werden kann.
Danach wird das Captcha Bild angezeigt. Auch hier wird nun die Id als Parameter h übergeben, damit der erzeugte Code in der Datei “captcha.php” mit der Id gespeichert werden kann.
Nun folgt noch das eigentliche Eingabefeld für den Captcha Code und ein weiteres verstecktes Feld für die Zufallsnummer des Eingabefeldnamens.
Ein Senden-Button vervollständigt das Formular, nun kann es getestet werden. Bei falscher Codeeingabe sollte ein roter Hinweistext erscheinen, andernfalls ein schwarzer Infotext.




Sonntag, 2. März 2008
Der Captcha-Artikel sieht *sehr* gut aus (auch wenn ich noch keine Zeit hatte, ihn im einzelnen durchzulesen). Vielen Dank!
Sonntag, 2. März 2008
Es scheint allerdings gute Argumente zu geben, auf Captchas zu verzichten, vgl.
http://1ngo.de/web/captcha-spam.html
Sonntag, 2. März 2008
Klar sind Captchas nicht das perfekte Wundermittel gegen Spam, wurde von mir ja auch nie behauptet. Ich sehe sie lediglich als eine Lösung von vielen und daher der Artikel
Dienstag, 24. Juni 2008
Das Tut ist wirklich gut,bei mir gibt es allerdings einen Schönheitsfehler,es findet kein Abbruch statt wenn ich überhaupt nichts eintrage.??habe es in mein Gästebuch eingefügt. (-: