Opération Captcha
Tous les adaptateurs CAPTCHA implémentent
Zend_Captcha_Adapter, qui ressemble à ceci :
interface Zend_Captcha_Adapter extends Zend_Validate_Interface
{
public function generate();
public function render(Zend_View $view, $element = null);
public function setName($name);
public function getName();
public function getDecorator();
// De plus, pour satisfaire Zend_Validate_Interface :
public function isValid($value);
public function getMessages();
public function getErrors();
}
Le mutateur et l'accesseur "name" sont utilisés pour spécifier et récupérer
l'identifiant du CAPTCHA. getDecorator() peut
être utilisé pour spécifier un
décorateur Zend_Form soit par son nom ou en retournant un objet
décorateur. Les vraies clés sont utilisées sauf pour generate() et
render(). generate() est utilisé pour
créer l'élément CAPTCHA.
Ce processus typiquement stockera l'élément en session ainsi il pourra être utilisé pour
comparaison dans les requêtes suivantes. render() est utilisé
pour effectuer le rendu de l'information que représente le CAPTCHA -
en image, en texte Figlet, en problème logique, ou tout autre type de
CAPTCHA.
Un cas d'utilisation typique pourrait ressembler à ceci :
// Créer une instance de Zend_View
$view = new Zend_View();
// Requête original :
$captcha =
new Zend_Captcha_Figlet
(array(
'name' => 'foo',
'wordLen' => 6,
'timeout' => 300,
));
$id = $captcha->generate();
echo $captcha->
render($view);
// Lors de la requête suivante :
// suppose que $captcha a été paramètré avant,
// et que $value est la valeur soumise :
if ($captcha->isValid($_POST['foo'], $_POST)) {
// Validated!
}