Captcha mit der GD-Bibliothek erstellen

Anlässlich meines heutigen Geburtstages, möchte ich euch auch was schenken. Nun, jeder kennt es, jedem nervt es, nur dem Admin nicht, denn so eine Sicherheitscode-Abfrage ist ziemlich nützlich, denn ohne ihn könnten Spambots die darauf folgende Seite n-mal aufrufen und viel Traffic verursachen. Ja, die Rede ist von den berühmten „Captcha-Bildchen“ die unsere Formulare schützen. Hierfür stelle ich euch die Klasse „CaptchaGenerator“ frei zu Verfügung. Sie funktioniert recht einfach. Ich habe die Klasse abstrakt gehalten, sodass sie überall eingebaut werden kann. Bei der Erstellung des Objektes muss ein Schriftart-Datei, eine Hintergrundbild und die Länge der Sicherheitsabfrage übergeben werden.

Datei: captcha.php

// Einfache Anwendung.
try
{
    $captcha = new CaptchaGenerator(dirname($_SERVER["SCRIPT_FILENAME"]).'/arial.ttf',
                                    dirname($_SERVER["SCRIPT_FILENAME"]).'/pwdimage.png',
                                    4);

    /*
     * Hier kann nun vor der Ausgabe des Bildes der generierte
     * Sicherheitscode ausgelesen und beliebig zwischengespeichert
     * werden z. Bsp. in der Session. So kann später beim Absenden
     * der Daten überprüft werden ob der eingegebene Sicherheitscode
     * derselbe ist wie er auch auf der Captcha-Bilddatei generiert wurde.
     */

    $the_captcha_phrase = $captcha->getPhrase();

    $captcha->render();
}
catch (Exception $e)
{
    print $e->getMessage();
}

Nach der Instanziierung ist es möglich auch die die Schrittgröße, die Schriftfarbe, der X und Y Abstand zum unteren Bildrand des Captchas zu beeinflussen.

// Angepasste Anwendung.

// ...

    $captcha->setFontcolor(CaptchaGenerator::FONT_COLOR_BLUE)
            ->setFontsize(16)
            ->setPhraselength(5)
            ->setFontxmargin(55)
            ->setFontymargin(4)
            ->render();

// ...

So, kann das Captcha in HTML eingebunden werden.

Datei: test.html


So würde das Capcha aussehen. (Ich habe es hier im Beitrag als ein statisches Bild eingefügt, da ich keine PHP-Code-Ausführung im Beitrag einschleusen möchte. So ist das für mich sicherer und Ihr könnt genau sehen wie das Captcha aussehen würde.) Bei jedem Neuladen des Formulars würde sich eine neuer Sicherheitscode auf die Grafik generieren.

captcha-samp
captcha-samp

Ihr könnt diesen Sicherheitscode z.B. bei Anmeldungen oder Kontaktformularen nutzen. Damit das funktioniert, müssen ihr PHP mit der GD-Bibliothek zur Grafikbearbeitung kompilieren. Hier die CaptchaGenerator PHP Klasse runter laden und ausprobieren. Wem aber die Barrierefreiheit sehr wichtig ist, der erfährt mehr über mögliche Alternativen zum Captcha auf der Blog-Seite von Ingo Turski.

1 thought on “Captcha mit der GD-Bibliothek erstellen

  1. Habe die Klasse runter gezogen und direkt ausprobiert. Funktioniert recht gut. Muss mir noch Gedanken machen wo ich die captcha_phrase am besten zwischenspeichern soll. Hmm….Danke dir.

Comments are closed.