<sect1 id="zend.captcha.operation">
    <title>פעולת אנטי-ספאם</title>

    <para>
        כל האובייקטים המוחשיים של CAPTCHA מיישמים את <code>Zend_Captcha_Adapter</code>, שנראה ככה:
    </para>

    <programlisting role="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();

    // Additionally, to satisfy Zend_Validate_Interface:
    public function isValid($value);

    public function getMessages();

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

    <para>
        מתודות ה <code>setName()</code> ו <code>getName()</code> נועדו להגדיר ולהחזיר את המזהה היחודי של ה captcha.
        <code>getDecorator()</code> יכול לשמש בתור שימוש באובייקט עיצוב של  Zend_Form, בין אם זה על ידי הזנת השם או החזרת האובייקט של העיצוב עצמו.
        כל העבודה החשובה נעשית אבל במתודת <code>generate()</code> ו <code>render()</code>.
        <code>generate()</code> נועד כדי ליצור את המפתח היחודי ל captcha. תהליך זה בדרך כלל ישמור את הזהה היחודי הזה ב session או בכל מקום אחר שתוכלו לאחר מכן להשוות מולו.
         <code>render()</code> נועד להציג את המידע אשר יאמת את הפרטים מול המזהה היחודי שנשמר קודם לכן, בין אם זה הצגת תמונה, טקסט רנדומלי או בעיה לוגית כלשהי.
    </para>

    <para>
        דוגמא לשימוש סטנדרטי נראה כך:
    </para>

        <programlisting role="php"><![CDATA[
// Creating a Zend_View instance
$view = new Zend_View();

// Originating request:
$captcha = new Zend_Captcha_Figlet(array(
    'name' => 'foo',
    'wordLen' => 6,
    'timeout' => 300,
));
$id = $captcha->generate();
echo $captcha->render($view);

// On subsequent request:
// Assume captcha setup as before, and $value is the submitted value:
if ($captcha->isValid($_POST['foo'], $_POST)) {
    // Validated!
}
]]>
        </programlisting>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
