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

    <para>
        Alle <acronym>CAPTCHA</acronym> Adapter implementieren
        <classname>Zend_Captcha_Adapter</classname>, welches wie folgt aussieht:
    </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();

    // Zusätzlich um das Zend_Validate_Interface zu befriedigen:
    public function isValid($value);

    public function getMessages();

    public function getErrors();
}
]]></programlisting>

    <para>
        Die benannten Getter- und Settermethoden werden verwenden um den <acronym>CAPTCHA</acronym>
        Identifikator zu spezifizieren und zu empfangen. <methodname>getDecorator()</methodname>
        kann verwendet werden um einen <classname>Zend_Form</classname> Dekorator entweder durch
        seinen Namen zu Spezifizieren oder indem ein aktuelles Dekoratorobjekt zurückgegeben wird.
        Der interessantesten Methoden sind aber <methodname>generate()</methodname> und
        <methodname>render()</methodname>. <methodname>generate()</methodname> wird verwendet um
        das <acronym>CAPTCHA</acronym> Token zu erstellen. Dieser Prozess speichert das Token
        typischerweise in der Session damit es in nachfolgenden Anfragen verglichen werden kann.
        <methodname>render()</methodname> wird verwendet um die Informationen die das
        <acronym>CAPTCHA</acronym> repräsentieren darzustellen - ob es ein Bild ist, ein Figlet,
        ein logisches Problem, oder andere <acronym>CAPTCHA</acronym>.
    </para>

    <para>
        Ein typischer Verwendungsfall könnte wie folgt aussehen:
    </para>

    <programlisting language="php"><![CDATA[
// Eine Instanz von Zend_View erstellen
$view = new Zend_View();

// Originale Anfrage:
$captcha = new Zend_Captcha_Figlet(array(
    'name' => 'foo',
    'wordLen' => 6,
    'timeout' => 300,
));

$id = $captcha->generate();
echo "<form method=\"post\" action=\"\">";
echo $captcha->render($view);
echo "</form>";

// Eine nachfolgende Anfrage:
// Angenommen das Captcha wurde wie vorher eingestellt, dann wäre der Wert von
// $_POST['foo'] ein Schlüssel/Wert Array:
// id => captcha ID, input => captcha value
if ($captcha->isValid($_POST['foo'], $_POST)) {
    // Validated!
}
]]></programlisting>
</sect1>
