Verwendung von Captcha

Um zu verhindern, dass Bots ein Formular absenden, werden Captchas verwendet. Hierbei handelt es sich um kleine Bilder, die meinst eine Folge von Zahlen, Buchstaben und Zeichen oder sogar einfachen mathematischen Rechnungen beinhalten. Dieser Code wird bei jedem Aufruf zufällig generiert und ist für Maschinen oft gar nicht oder nur schwer lesbar. Daher wird er dazu verwendet, einen echten Benutzer und eine maschienelle Eingabe zu unterscheiden.

Eine solche Captcha-Funktion wird im System von EGOTEC angeboten.

warning
Die Captcha-Funktion benötigt  das GD-Lib Modul mit integrierter Free-Type Bibliothek (http://de2.php.net/imagettfbbox).

Vorbereitungen

Im ersten Schritt wird die Captcha-Klasse eingebunden. Sobald das geschehen ist, steht sowohl im Skript als auch als Smarty-Variable automatisch das Objekt $captcha zur Verfügung:

// Captcha einbinden require_once('captcha/Ego_Captcha.php');

Überprüfung (im Skript über PHP)

Mit Hilfe der Methode check() kann nun einfach überprüft werden, ob die Eingabe korrekt war:

if($captcha->check($modus,$name)) {   echo 'Captcha wurde korrekt ausgefüllt'; }

Hierbei existieren zwei Parameter:

ParameterBeschreibung
modus Art der Captcha Prüfung ("string" oder "number"). Der Wert "string" wird ausdrücklich empfohlen.
name [optional] Prüfung, ob Captcha-Funktion aktiviert ist. Beim Wert current wird für die aktuellen Seite geprüft, ob im Backend die Captcha-Funktion aktiviert wurde. (Der Seitentyp muss entsprechend um eine Checkbox im Adminbereich erweitert werden). Wird der Parameter weggelassen, erfolgt keine Prüfung auf Aktivierung: Die Captcha-Funktionalität ist automatisch aktiv.

Einige Fallbeispiele:

  • Kann man bei der aktuellen Seite Spam-Schutz einstellen und ist dieser deaktiviert, liefert diese Funktion immer true zurück.
  • Ist der Spam-Schutz aktiviert, liefert diese Funktion false zurück wenn die Überprüfung fehlgeschlagen ist.
  • Kann man Spam-Schutz nicht einstellen, ist dieser automatisch immer aktiviert und diese Funktion liefert false zurück wenn die Überprüfung fehlgeschlagen ist.

Überprüfung (im Template über Smarty)

Die check-Methode kann über das $captcha-Objekt ebenso im Template verwendet werden.

{* Prüfen, ob für die aktuelle Seite Captcha aktiviert wurde (diese Prüfung kann auch weg gelassen werden) *} {if $captcha.active.current}    {* Auf Eingabe prüfen *}    {if !$captcha.check}       Die Captcha Prüfung ist fehlgeschlagen.    {/if} {/if}

Damit die Überprüfung auf korrekte Eingabe vom $captcha-Objekt überhaupt durchgeführt werden kann, müssen im Template die einzlenen Elemente wie Captcha-Bild, Eingabe-Feld, reload-Button usw. positioniert werden:

<table>{* Über die Smarty-Funktion get_captcha werden HTML-Elemente generiert *} {get_captcha var_text="cap_text" var_image="cap_image" var_reload="cap_reload" height=60} <table>    <tr>       <td valign="top">          {$cap_image}       </td>       <td valign="top" width="100%">          <span>{t}Sicherheitsprüfung:{/t}</span>          {$cap_text}          <span>{$cap_reload}</span>       </td>    </tr> </table>

Weitere Informationen finden Sie im Designerhandbuch unter {get_captcha}.

3. Spam-Schutz einstellbar machen

Möchten Sie im Adminbereich der Seite den Captcha-Schutz aktiverbar machen, erstellen Sie auf dem gewünschten Reiter eine entsprechende Checkbox. Diese muss zwingend den Namen captcha_active tragen, da auf dieses Extrafeld in der Ego_Captcha Klasse geprüft wird. Gültige Werte für dieses Feld im Falle einer Aktivierung sind 1 oder true.

wb_incandescent
Den Text "neu laden" für das Captcha können Sie in /skin/mandant/locale/sprache übersetzten. Lesen Sie dazu bitte auch Mehrsprachigkeit. Ergänzen Sie die translation.ini einfach um den Zeile  neu laden = reload (z.B. für die Englische Sprache)
warning
Sollten Sie Probleme haben, dass die Captcha Grafik scheinbar unverändert bleibt oder zur selben Zeit in mehreren Browsern identisch, dann ist wohlmöglich die Server Cache verantwortlich. Hier reicht es wenn Sie über den Reiter Meta die Server Cache deaktivieren. Grundsätzlich ist es ratsam bei Seiten auf denen ein Captcha angezeigt wird, diese aber auch von nicht angemeldeten Benutzern verwendet werden können, keine Server Cache zu verwenden.