| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.captcha.operation">
- <title>Работа с captcha</title>
- <para>
- Все адаптеры <acronym>CAPTCHA</acronym> реализуют интерфейс
- <classname>Zend_Captcha_Adapter</classname>:
- </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();
- // Additionally, to satisfy Zend_Validate_Interface:
- public function isValid($value);
- public function getMessages();
- public function getErrors();
- }
- ]]></programlisting>
- <para>
- Сеттеры и геттеры имени используются для задания и получения идентификатора
- <acronym>CAPTCHA</acronym>. <methodname>getDecorator()</methodname> может
- использоваться для определения декоратора <classname>Zend_Form</classname>
- по имени (?) и возвращает текущий объект декоратора. Особенно интересны методы
- <methodname>generate()</methodname> и <methodname>render()</methodname>.
- <methodname>generate()</methodname> используется для генерирования токена
- <acronym>CAPTCHA</acronym>. По умолчанию токен хранится в сессии, так что
- можно использовать его между различными запросами одного клиента.
- <methodname>render()</methodname> генерирует данные, представляющие
- <acronym>CAPTCHA</acronym> -- картинка с искажённым текстом, figlet,
- логический вопрос или любая иная форма <acronym>CAPTCHA</acronym>.
- </para>
- <para>
- Код для работы с <acronym>CAPTCHA</acronym> может выглядеть так:
- </para>
- <programlisting language="php"><![CDATA[
- // Создаём объект Zend_View
- $view = new Zend_View();
- // Создаём captcha:
- $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>";
- // Проверка отправленной формы:
- // Данные captcha находятся с массиве $_POST['foo']
- // в этом массиве должны быть следующие пары ключ => значение:
- // id => идентификатор captcha, input => значение captcha
- if ($captcha->isValid($_POST['foo'], $_POST)) {
- // Validated!
- }
- ]]></programlisting>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|