2
0

Zend_Captcha-Operation.xml 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.captcha.operation">
  5. <title>Captcha Anwendung</title>
  6. <para>
  7. Alle <acronym>CAPTCHA</acronym> Adapter implementieren
  8. <classname>Zend_Captcha_Adapter</classname>, welches wie folgt aussieht:
  9. </para>
  10. <programlisting language="php"><![CDATA[
  11. interface Zend_Captcha_Adapter extends Zend_Validate_Interface
  12. {
  13. public function generate();
  14. public function render(Zend_View $view, $element = null);
  15. public function setName($name);
  16. public function getName();
  17. public function getDecorator();
  18. // Zusätzlich um das Zend_Validate_Interface zu befriedigen:
  19. public function isValid($value);
  20. public function getMessages();
  21. public function getErrors();
  22. }
  23. ]]></programlisting>
  24. <para>
  25. Die benannten Getter- und Settermethoden werden verwenden um den <acronym>CAPTCHA</acronym>
  26. Identifikator zu spezifizieren und zu empfangen. <methodname>getDecorator()</methodname>
  27. kann verwendet werden um einen <classname>Zend_Form</classname> Dekorator entweder durch
  28. seinen Namen zu Spezifizieren oder indem ein aktuelles Dekoratorobjekt zurückgegeben wird.
  29. Der interessantesten Methoden sind aber <methodname>generate()</methodname> und
  30. <methodname>render()</methodname>. <methodname>generate()</methodname> wird verwendet um
  31. das <acronym>CAPTCHA</acronym> Token zu erstellen. Dieser Prozess speichert das Token
  32. typischerweise in der Session damit es in nachfolgenden Anfragen verglichen werden kann.
  33. <methodname>render()</methodname> wird verwendet um die Informationen die das
  34. <acronym>CAPTCHA</acronym> repräsentieren darzustellen - ob es ein Bild ist, ein Figlet,
  35. ein logisches Problem, oder andere <acronym>CAPTCHA</acronym>.
  36. </para>
  37. <para>
  38. Ein typischer Verwendungsfall könnte wie folgt aussehen:
  39. </para>
  40. <programlisting language="php"><![CDATA[
  41. // Eine Instanz von Zend_View erstellen
  42. $view = new Zend_View();
  43. // Originale Anfrage:
  44. $captcha = new Zend_Captcha_Figlet(array(
  45. 'name' => 'foo',
  46. 'wordLen' => 6,
  47. 'timeout' => 300,
  48. ));
  49. $id = $captcha->generate();
  50. echo "<form method=\"post\" action=\"\">";
  51. echo $captcha->render($view);
  52. echo "</form>";
  53. // Eine nachfolgende Anfrage:
  54. // Angenommen das Captcha wurde wie vorher eingestellt, dann wäre der Wert von
  55. // $_POST['foo'] ein Schlüssel/Wert Array:
  56. // id => captcha ID, input => captcha value
  57. if ($captcha->isValid($_POST['foo'], $_POST)) {
  58. // Validated!
  59. }
  60. ]]></programlisting>
  61. </sect1>