| Schutz vor Spam-Bots mit CAPTCHA |
Seite 1 von 4 VorwortSo ziemlich jeder der ein Kontaktformular, Gästebuch oder auch Forum auf seiner Webseite betreibt hat schon einmal Bekanntschaft mit dieser verhassten Gattung gemacht: Spam-Bots! In diesem Tutorial erstellen wir uns ein einfaches CAPTCHA-Script und anhand eines Pseudo-Kontaktformulars wird demonstriert wie man auch nachträglich noch ein CAPTCHA in sein Formular, Gästebuch oder was auch immer, einbauen kann. VoraussetzungenUm das hier gezeigte erfolgreich in eigene Projekte zu übernehmen benötigt man
Ob der Webserver, auf dem das Script laufen soll, GD2 Unterstützung bietet kann man sehr einfach herausfinden indem man phpinfo() ausführt und den Abschnitt GD unter die Lupe nimmt. Das Kontaktformular ohne CAPTCHANachfolgend der Quelltext unseres Beispiel-Kontaktformulars das wir nachträglich mit einem CAPTCHA erweitern wollen. Um Platz zu sparen ist das Script etwas gekürzt und der CSS Teil wurde entfernt. In der angehängen Datei ist jedoch das komplette Script enthalten. <?php // Variablen initialisieren $NameFehler = $EmailFehler = $NachrichtFehler = FALSE; $Fehlerfrei = TRUE; // Formular wurde abgeschickt if (isset( $_POST['senden'] )) { // Felder auf Inhalt pruefen if (strlen( trim( $_POST['name'] ) ) < 3) { $Fehlerfrei = FALSE; $NameFehler = TRUE; } if (strlen( trim( $_POST['email'] ) ) < 3) { $Fehlerfrei = FALSE; $EmailFehler = TRUE; } if (strlen( trim( $_POST['nachricht'] ) ) < 3) { $Fehlerfrei = FALSE; $NachrichtFehler = TRUE; } // Wenn alle Felder ausgefuellt wurden und der CAPTCHA-Code korrekt war if ($Fehlerfrei) { // Code zum Email-Versand ausfuehren echo "<h2 class="tut-headline">Das Formular wurde korrekt ausgefuellt!</h2>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Kontaktformular mit CAPTCHA</title> </head> <body> <form id="kontaktformular" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <fieldset> <legend>Kontaktformular</legend> <label for="name"><?php echo $NameFehler ? '<span style="color: #FF0000;">Ihr Name:</span>' : 'Ihr Name:'; ?></label> <input name="name" id="name" type="text" value="<?php echo $_POST['name']; ?>" /> <label for="email"><?php echo $EmailFehler ? '<span style="color: #FF0000;">Ihre Email:</span>' : 'Ihre Email:'; ?></label> <input name="email" id="email" type="text" value="<?php echo $_POST['email']; ?>" /> <label for="nachricht"><?php echo $NachrichtFehler ? '<span style="color: #FF0000;">Ihre Nachricht:</span>' : 'Ihre Nachricht:'; ?></label> <textarea rows="6" name="nachricht" id="nachricht"><?php echo $_POST['nachricht']; ?></textarea> <input name="senden" id="senden" type="submit" value="Absenden" class="button" /> </fieldset> </form> </body> </html> Wie man unschwer sieht ist dieses Script alles andere als sicher. Für ein Spam-Bot wäre es ein leichtes tausende von Emails an unzählige User zu senden. Ja korrekt gelesen; Spam-Bots haben es nicht darauf abgesehen einem einzelnen Benutzer das Postfach zu verstopfen, sondern sind viel eher darauf aus ihre unerwünschte Botschaften und Werbung an tausende Benutzer gleichzeitig zu verteilen. Man kann sich wohl zu 99% sicher sein das die tägliche Pharma-Werbung in der Mailbox über unsichere und nachlässig programmierte Scripts von Hobbywebmaster kommen. |