Captcha

In het security component zijn helper functies aanwezig om snel een Captcha toe te voegen aan een formulier volgens de actieve security instellingen.

Toevoegen

Om een Captcha in een formulier op te nemen, genereert de volgende code de HTML hiervoor.

tx('Component')->helpers('security')->call('generate_captcha')

Het beste kan deze code in de controller worden geplaatst van een pagina. Zoals in het Views.php bestand van een component.

Let op dat deze opzet alleen werkt voor één poging op het formulier. Wanneer er gebruikgemaakt wordt van een volledige pagina reload bij het versturen van het formulier werkt dit prima. Maar bij formulieren die dynamisch worden verzonden, zoals een REST formulier moet een javascript toevoeging worden gedaan.

tx('Component')->helpers('security')->call('reload_captcha_js')

Verzorgt een javascript snippet die de huidige Captcha ververst. Dit kan bijvoorbeeld worden geplaatst in de error callback van restForm. Bijvoorbeeld:



jQuery(function($){
 
  $('#mijn-formulier').restForm({
    
    success: function(result){
      
      //Clear fields.
      this.reset();
      
      //Notify user.
      alert('Formulier verzonden.');
      
    },
    
    error: function(){
      
      //Reloads the captcha if needed.
      helpers('security')->call('reload_captcha_js'); ?>
      
    }
    
  });
 
});

Controleren

Natuurlijk is het essentieel om de actie waar het formulier voor bedoeld is te laten controleren of de Captcha juist is ingevuld. Daarvoor is de volgende helper beschikbaar:

tx('Component')->helpers('security')->call('validate_captcha', array('form_data' => $data))

Deze helper accepteert de gehele form-data van het formulier als input en geeft een boolean terug om aan te geven of de ingevulde Captcha juist is. De helper houd hierbij rekening met de instellingen op de server. Bijvoorbeeld, als Captcha's uit staan geeft deze functie altijd true terug.

De volledige formulier data wordt gevraagd omdat het afhankelijk is van het type Captcha welke namen de variabelen hebben. De formulier data die geen betrekking heeft op Captcha validatie wordt niet verwerkt. Dit is te controleren in de code van /site/components/security/Helpers.php.

 

Gerelateerde configuratie waarden

Deze waarden worden ingesteld in de beveiligingsinstellingen van het security component.

  • captcha_type, Het type Captcha dat gebruikt moet worden. Opties: recaptcha, captcha en disabled.
  • recaptcha_public_key, De publieke sleutel voor reCAPTCHA.
  • recaptcha_private_key, De privé-sleutel voor reCAPTCHA.