<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.captcha.operation">
    <title>Opération Captcha</title>

    <para>
        Tous les adaptateurs <acronym>CAPTCHA</acronym> implémentent
        <classname>Zend_Captcha_Adapter</classname>, qui ressemble à ceci&#160;:
    </para>

    <programlisting language="php"><![CDATA[
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();
}
]]></programlisting>

    <para>
        Le mutateur et l'accesseur "name" sont utilisés pour spécifier et récupérer
        l'identifiant du <acronym>CAPTCHA</acronym>. <methodname>getDecorator()</methodname> peut
        être utilisé pour spécifier un
        décorateur <classname>Zend_Form</classname> soit par son nom ou en retournant un objet
        décorateur. Les vraies clés sont utilisées sauf pour <methodname>generate()</methodname> et
        <methodname>render()</methodname>. <methodname>generate()</methodname> est utilisé pour
        créer l'élément <acronym>CAPTCHA</acronym>.
        Ce processus typiquement stockera l'élément en session ainsi il pourra être utilisé pour
        comparaison dans les requêtes suivantes. <methodname>render()</methodname> est utilisé
        pour effectuer le rendu de l'information que représente le <acronym>CAPTCHA</acronym> -
        en image, en texte Figlet, en problème logique, ou tout autre type de
        <acronym>CAPTCHA</acronym>.
    </para>

    <para>Un cas d'utilisation typique pourrait ressembler à ceci&#160;:</para>

    <programlisting language="php"><![CDATA[
// 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!
}
]]></programlisting>
</sect1>
