CAPTCHA-Taglib (für Formulare)

Mit dem Modul captcha können Sie ein Formular auf einfache Weise mit einem (Bild-)CAPTCHA schützen. Der mitgelieferte Tag fügt sich dabei nahtlos in die bestehenden Formular-Elemente ein.

Zur Nutzung konfigurieren Sie lediglich eine Front-Controller-Action zur Auslieferung des CAPTCHA-Bildes und integrieren den <form:captcha />-Tag mit Hilfe von <form:addtaglib /> in das gewünschte Formular.

Neben diesem Modul steht eine weitere Implementierung für den Schutz von Formularen zur Verfügung. Details lesen Sie unter ReCaptcha. Diese setzt das von Google angebotene CAPTCHA-Konzept ein und schützt damit nicht nur vor automatisierten Aufrufen Ihrer Seiten, sondern hilft dabei auch noch die OCR-Software zur Digitalisierung von Büchern zu verbessern.

1. Konfiguration der FrontController-Action

Da die Auslieferung des CAPTCHA-Bildes wird über eine Front-Controller-Action realisiert. Jede Action wird durch eine Konfiguration beschrieben. Als Vorlage lässt sich die Datei /config/modules/captcha/biz/actions/EXAMPLE_actionconfig.ini aus dem entsprechenden apf-configpack-*-Release nutzen.

Der Front-Controller erwartet die Konfiguration unter dem Pfad

Code
/APF/config/modules/captcha/biz/{CONTEXT}/{ENVIRONMENT}_actionconfig.ini

wobei {CONTEXT} und {ENVIRONMENT} durch die für Ihr Projekt gültigen Werte zu ersetzen sind. Details zur Definition von Konfigurationen im APF entnehmen Sie bitte der Seite Konfiguration.

2. Einbindung des Tags

Zur Nutzung des Tags muss dieser zunächst innerhalb des Formulares zunächst bekannt gemacht werden. Dies lässt sich mit Hilfe des <form:addtaglib />-Tags erledigen. Anschließend ist das Tag innerhalb des gewünschten Formulars verfügbar und kann unter dem registrierten Prefix und Namen genutzt werden. Die folgende Code-Box zeigt ein Anwendungsbeispiel, das die wichtigsten Attribute des Tags beinhaltet:

APF-Template
<html:form name="MeinFormular" action="post"> ... <form:addtaglib class="APF\modules\captcha\pres\taglib\SimpleCaptchaTag" prefix="form" name="captcha" /> <form:captcha name="captcha" /> <form:addvalidator class="APF\modules\captcha\pres\validator\CaptchaValidator" control="captcha" button="send" /> ... <form:button name="send" /> </html:form>
Bitte denken Sie daran, das CAPTCHA-Feld mit einem Validator zu belegen. Hierzu wird der CaptchaValidator mitgeliefert. Möchten Sie zur Eingabe-Sicherung einen Filter anwenden, so können Sie die mitgelieferte Klasse APF\modules\captcha\pres\filter\CaptchaFilter nutzen:
APF-Template
<html:form name="MeinFormular" action="post"> ... <form:addtaglib class="APF\modules\captcha\pres\taglib\SimpleCaptchaTag" prefix="form" name="captcha" /> <form:captcha name="captcha" /> <form:addvalidator class="APF\modules\captcha\pres\validator\CaptchaValidator" control="captcha" button="send" /> <form:addfilter class="APF\modules\captcha\pres\filter\CaptchaFilter" control="captcha" button="send" /> ... <form:button name="send" /> </html:form>

In der Ausgabe des Formulars erzeugt das Tag ein CAPTCHA-Bild und ein Textfeld zur Eingabe des Test-Ergebnisses. Die folgende Liste gibt eine Übersicht über die verfügbaren Attribute und deren Bedeutung:

  • image_style: CSS-Stil-Angaben zum CAPTCHA-Bild
  • image_class: CSS-Klassen-Angaben zum CAPTCHA-Bild
  • image_id: HTML-ID zum CAPTCHA-Bild
  • text_style: CSS-Stil-Angaben zum generierten Text-Feld
  • text_class: CSS-Klassen-Angaben zum generierten Text-Feld
  • text_id: HTML-ID zum generierten Text-Feld
  • validate: Aktiviert die Validierung
  • button: Name des Buttons, auf dessen Klick die Validierung stattfinden soll
  • clearonerror: Das optionale Attribut definiert, ob das Feld bei falscher Eingabe geleert werden soll. Enthält das Attribut einen anderen Wert als "true" oder ist nicht vorhanden, wird das Feld weiterhin vorausgefüllt.
  • clearonformerror: Das optionale Attribut definiert, ob das Feld bei geleert werden soll, wenn das Formular nicht erfolgreich validiert werden konnte. Enthält das Attribut einen anderen Wert als "true" oder ist nicht vorhanden, wird das Feld weiterhin vorausgefüllt.
  • disable_inline: Ist das optionale Attribut auf true gesetzt, so werden die Inline-CSS-Styles abgeschalten, die für die Formatierung des CAPTCHA-Bildes und dem Text-Feld eingesetzt werden, so dass diese nebeneinander erscheinen. Beinhaltet das Attribut einen anderen Wert oder ist nicht vorhanden, werden die angesprochenen Stile gesetzt.

3. Funktion des Tags

Durch die direkte Integration des CAPTCHA-Tags in das Formular kann der Tag direkten Einfluss auf die Validierung des Formulars nehmen. Wurde das CAPTCHA-Feld richtig ausgefüllt und sind alle übrigen Felder des Formulars valide, wird auch das Formular als valide gekennzeichnet. Ist das CAPTCHA-Feld nicht korrekt ausgefüllt, kann das Formular nicht verarbeitet werden. Wichtig dabei ist, dass das Formular im Controller sowohl auf isSent() als auch isValid() geprüft wird.

Zur Sicherheit wird bei jedem Aufruf des Formulars das CAPTCHA-Bild neu generiert.

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
« 1   »
Einträge/Seite: | 5 | 10 | 15 | 20 |