Skip to content

Doku Entwickler Captcha

René Schirmer edited this page Feb 1, 2020 · 4 revisions

Captcha

captchaNeeded() verfügbar ab Ilch 2.1.8.

Der Administrator kann im Admincenter angeben welche Benutzer-Gruppen kein Captcha lösen müssen. Ein Modul sollte diese Einstellungen respektieren, wenn ein Captcha genutzt wird. Damit ein Modul einfach abfragen kann ob ein Captcha angezeigt werden soll oder nicht wurde die Funktion captchaNeeded() geschaffen. Die Funktion captchaNeeded() gibt einen Rückgabewert vom Typ Boolean (true, false) zurück. "true" wird zurückgegeben, wenn das Lösen eines Captcha notwendig ist, andernfalls "false".

Im Controller des Moduls wird die Validator-Klasse genutzt. Hier muss man natürlich je nach Rückgabewert von captchaNeeded() die Regeln für den Validator anpassen. Der Rückgabewert dieser Funktion wird an die View übergeben, damit dort das Captcha aus- bzw. eingeblendet werden kann.

$captchaNeeded = captchaNeeded();
[...]
$validationRules = [
    'name' => 'required',
    'link' => 'required|url',
    'banner' => 'required|url'
];
if ($captchaNeeded) {
    $validationRules['captcha'] = 'captcha';
}
$validation = Validation::create($post, $validationRules);
[...]
$this->getView()->set('captchaNeeded', $captchaNeeded);

Hier wird der Rückgabewert von captchaNeeded() genutzt um zu entscheiden ob ein Captcha in die View eingebunden wird oder nicht.

<?php if ($this->get('captchaNeeded')) : ?>
<div class="form-group <?=$this->validation()->hasError('captcha') ? 'has-error' : '' ?>">
    <label class="col-lg-2 control-label">
        <?=$this->getTrans('captcha') ?>
    </label>
    <div class="col-lg-8">
        <?=$this->getCaptchaField() ?>
    </div>
</div>
<div class="form-group <?=$this->validation()->hasError('captcha') ? 'has-error' : '' ?>">
    <div class="col-lg-offset-2 col-lg-8 input-group captcha">
        <input type="text" 
               class="form-control" 
               id="captcha-form" 
               name="captcha" 
               autocomplete="off" 
               placeholder="<?=$this->getTrans('captcha') ?>" />
        <span class="input-group-addon">
            <a href="javascript:void(0)" onclick=" 
                document.getElementById('captcha').src='<?=$this->getUrl() ?>/application/libraries/Captcha/Captcha.php?'+Math.random();
                document.getElementById('captcha-form').focus();" 
                id="change-image">
                <i class="fa fa-refresh"></i>
            </a>
        </span>
    </div>
</div>
<?php endif; ?>

Wiki für ilch-2

Benutzer

  • Inhaltsverzeichnis
    Hier findet man u.a. die Installationsanleitung, sowie Fehler- und Problem-behebungen

Entwickler

  • Inhaltsverzeichnis
    Hier findet man Informationen zum Script, Konzept und dem Programmierstil

Designer

  • Inhaltsverzeichnis
    Hier findet man Informationen über den Aufbau und Anpassung von Layouts und Modulen

Video-Tutorials


Clone this wiki locally