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.
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:
Parameter | Beschreibung |
---|---|
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.