Zend_Captcha-Operation.xml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect1 id="zend.captcha.operation">
  4. <title>Работа с captcha</title>
  5. <para>
  6. Все адаптеры <acronym>CAPTCHA</acronym> реализуют интерфейс
  7. <classname>Zend_Captcha_Adapter</classname>:
  8. </para>
  9. <programlisting language="php"><![CDATA[
  10. interface Zend_Captcha_Adapter extends Zend_Validate_Interface
  11. {
  12. public function generate();
  13. public function render(Zend_View $view, $element = null);
  14. public function setName($name);
  15. public function getName();
  16. public function getDecorator();
  17. // Additionally, to satisfy Zend_Validate_Interface:
  18. public function isValid($value);
  19. public function getMessages();
  20. public function getErrors();
  21. }
  22. ]]></programlisting>
  23. <para>
  24. Сеттеры и геттеры имени используются для задания и получения идентификатора
  25. <acronym>CAPTCHA</acronym>. <methodname>getDecorator()</methodname> может
  26. использоваться для определения декоратора <classname>Zend_Form</classname>
  27. по имени (?) и возвращает текущий объект декоратора. Особенно интересны методы
  28. <methodname>generate()</methodname> и <methodname>render()</methodname>.
  29. <methodname>generate()</methodname> используется для генерирования токена
  30. <acronym>CAPTCHA</acronym>. По умолчанию токен хранится в сессии, так что
  31. можно использовать его между различными запросами одного клиента.
  32. <methodname>render()</methodname> генерирует данные, представляющие
  33. <acronym>CAPTCHA</acronym> -- картинка с искажённым текстом, figlet,
  34. логический вопрос или любая иная форма <acronym>CAPTCHA</acronym>.
  35. </para>
  36. <para>
  37. Код для работы с <acronym>CAPTCHA</acronym> может выглядеть так:
  38. </para>
  39. <programlisting language="php"><![CDATA[
  40. // Создаём объект Zend_View
  41. $view = new Zend_View();
  42. // Создаём captcha:
  43. $captcha = new Zend_Captcha_Figlet(array(
  44. 'name' => 'foo',
  45. 'wordLen' => 6,
  46. 'timeout' => 300,
  47. ));
  48. $id = $captcha->generate();
  49. echo "<form method=\"post\" action=\"\">";
  50. echo $captcha->render($view);
  51. echo "</form>";
  52. // Проверка отправленной формы:
  53. // Данные captcha находятся с массиве $_POST['foo']
  54. // в этом массиве должны быть следующие пары ключ => значение:
  55. // id => идентификатор captcha, input => значение captcha
  56. if ($captcha->isValid($_POST['foo'], $_POST)) {
  57. // Validated!
  58. }
  59. ]]></programlisting>
  60. </sect1>
  61. <!--
  62. vim:se ts=4 sw=4 et:
  63. -->