Zend_Captcha-Adapters.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 21815 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.captcha.adapters">
  5. <title>CAPTCHA Adapter</title>
  6. <para>
  7. Die folgenden Adapter werden mit dem Zend Framework standardmäßig ausgeliefert.
  8. </para>
  9. <sect2 id="zend.captcha.adapters.word">
  10. <title>Zend_Captcha_Word</title>
  11. <para>
  12. <classname>Zend_Captcha_Word</classname> ist ein abstrakter Adapter der als Basisklasse
  13. für die meisten anderen <acronym>CAPTCHA</acronym> Adapter fungiert. Er bietet
  14. Mutatoren für die Spezifizierung der Wortlänge, Session <acronym>TTL</acronym>, das
  15. Session Namespaceobjekt das verwendet werden soll, und die Session Namespaceklasse die
  16. für die Persistenz zu verwenden ist wenn man
  17. <classname>Zend_Session_Namespace</classname> nicht verwenden will.
  18. <classname>Zend_Captcha_Word</classname> kapselt die Prüflogik.
  19. </para>
  20. <para>
  21. Standardmäßig ist die Wortlänge 8 Zeichen, das Sessiontimeout 5 Minuten und für die
  22. Persistenz wird <classname>Zend_Session_Namespace</classname> verwendet (wobei der
  23. Namespace "<classname>Zend_Form_Captcha_&lt;captcha ID&gt;</classname>" verwendet
  24. wird).
  25. </para>
  26. <para>
  27. Zusätzlich zu den Methoden wie vom <classname>Zend_Captcha_Adapter</classname> Interface
  28. benötigt werden bietet <classname>Zend_Captcha_Word</classname> die folgenden Methoden
  29. an:
  30. </para>
  31. <itemizedlist>
  32. <listitem>
  33. <para>
  34. <methodname>setWordLen($length)</methodname> und
  35. <methodname>getWordLen()</methodname> erlauben es die Länge des erzeugten
  36. "Wortes" in Zeichen zu spezifizieren, und den aktuellen Wert zu erhalten.
  37. </para>
  38. </listitem>
  39. <listitem>
  40. <para>
  41. <methodname>setTimeout($ttl)</methodname> und
  42. <methodname>getTimeout()</methodname> erlauben es die Lebenszeit des
  43. Sessiontokens zu spezifizieren, und den aktuellen Wert er erhalten.
  44. <varname>$ttl</varname> sollte in Sekunden spezifiziert sein.
  45. </para>
  46. </listitem>
  47. <listitem>
  48. <para>
  49. <methodname>setUseNumbers($numbers)</methodname> und
  50. <methodname>getUseNumbers()</methodname> erlauben es zu spezifizieren ob Nummern
  51. als mögliche Zeichen für den Zufall funktionieren oder ob nur Zeichen verwendet
  52. werden.
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. <methodname>setSessionClass($class)</methodname> und
  58. <methodname>getSessionClass()</methodname> erlauben es eine alternative
  59. <classname>Zend_Session_Namespace</classname> Implementation zu spezifizieren
  60. die verwendet werden soll um das <acronym>CAPTCHA</acronym> Token persistent zu
  61. machen und den aktuellen Wert zu bekommen.
  62. </para>
  63. </listitem>
  64. <listitem>
  65. <para>
  66. <methodname>getId()</methodname> erlaubt es den aktuellen Tokenidentifikator zu
  67. erhalten.
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. <methodname>getWord()</methodname> erlaubt es das erzeugte Wort das mit dem
  73. <acronym>CAPTCHA</acronym> verwendet wird zu erhalten. Es wird das Wort erzeugen
  74. wenn es bis dahin noch nicht erstellt wurde.
  75. </para>
  76. </listitem>
  77. <listitem>
  78. <para>
  79. <methodname>setSession(Zend_Session_Namespace $session)</methodname> erlaubt es
  80. ein Sessionobjekt zu spezifizieren das für die Persistenz des
  81. <acronym>CAPTCHA</acronym> Tokens verwendet wird.
  82. <methodname>getSession()</methodname> erlaubt es das aktuelle Sessionobjekt
  83. zu erhalten.
  84. </para>
  85. </listitem>
  86. </itemizedlist>
  87. <para>
  88. Alle Wort <acronym>CAPTCHA</acronym>s erlauben es ein Array von Optionen an den
  89. Konstruktor zu übergeben, oder alternativ dieses an
  90. <methodname>setOptions()</methodname> zu übergeben. Man kann auch ein
  91. <classname>Zend_Config</classname> Objekt an <methodname>setConfig()</methodname> zu
  92. übergeben. Standardmäßig können die <emphasis>wordLen</emphasis>,
  93. <emphasis>timeout</emphasis>, und <emphasis>sessionClass</emphasis> Schlüssel alle
  94. verwendet werden. Jede konkrete Implementation kann zusätzliche Schlüssel definieren
  95. oder die Optionen auf einem anderen Weg verwenden.
  96. </para>
  97. <note>
  98. <para>
  99. <classname>Zend_Captcha_Word</classname> ist eine abstrakte Klasse und kann nicht
  100. direkt instanziiert werden.
  101. </para>
  102. </note>
  103. </sect2>
  104. <sect2 id="zend.captcha.adapters.dumb">
  105. <title>Zend_Captcha_Dumb</title>
  106. <para>
  107. Der <classname>Zend_Captcha_Dumb</classname> Adapter ist fast selbsterklärend. Er
  108. bietet einen zufälligen String der in umgekehrter Reihenfolge eingegeben werden muß um
  109. validiert zu werden. Als solches ist es keine gute <acronym>CAPTCHA</acronym> Lösung,
  110. und sollte nur für Testzwecke verwendet werden. Er erweitert
  111. <classname>Zend_Captcha_Word</classname>.
  112. </para>
  113. </sect2>
  114. <sect2 id="zend.captcha.adapters.figlet">
  115. <title>Zend_Captcha_Figlet</title>
  116. <para>
  117. Der <classname>Zend_Captcha_Figlet</classname> Adapter verwendet
  118. <link linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link> um dem
  119. Benutzer ein Figlet zu präsentieren.
  120. </para>
  121. <para>
  122. Optionen die an den Konstruktor übergeben werden, werden auch an das
  123. <link linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link> Objekt
  124. übergeben. Schaue in die <link
  125. linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link>
  126. Dokumentation für Details darüber welche Konfigurationsoptionen vorhanden sind.
  127. </para>
  128. </sect2>
  129. <sect2 id="zend.captcha.adapters.image">
  130. <title>Zend_Captcha_Image</title>
  131. <para>
  132. Der <classname>Zend_Captcha_Image</classname> Adapter nimmt das erzeugte Wort und
  133. stellt es als Bild dar, führt diverse Verzerrungs-Permutationen durch und mach es so
  134. schwierig es automatisch zu entschlüsseln. Er benötigt die
  135. <ulink url="http://php.net/gd">GD Erweiterung</ulink> kompiliert mit TrueType oder
  136. Freetype Unterstützung. Aktuell kann der <classname>Zend_Captcha_Image</classname>
  137. Adapter nur <acronym>PNG</acronym> Bilder erzeugen.
  138. </para>
  139. <para>
  140. <classname>Zend_Captcha_Image</classname> erweitert
  141. <classname>Zend_Captcha_Word</classname>, und bietet zusätzlich die folgenden Methoden:
  142. </para>
  143. <itemizedlist>
  144. <listitem>
  145. <para>
  146. <methodname>setExpiration($expiration)</methodname> und
  147. <methodname>getExpiration()</methodname> erlauben es eine maximale Lebenszeit zu
  148. definieren die das <acronym>CAPTCHA</acronym> Bild auf dem Dateisystem bleibt.
  149. Das ist typischerweise längerer als die Session Lifetime. Die Garbage Collection
  150. läuft periodisch jedes Mal wenn das <acronym>CAPTCHA</acronym> Objekt enthalten
  151. ist, und löscht die Bilder die abgelaufen sind. Der Wert der Löschung sollte in
  152. Sekunden angegeben werden.
  153. </para>
  154. </listitem>
  155. <listitem>
  156. <para>
  157. <methodname>setGcFreq($gcFreq)</methodname> und
  158. <methodname>getGcFreg()</methodname> erlauben es zu Spezifizieren wie oft die
  159. Garbage Collection laufen soll. Die Garbage Collection wird alle
  160. <command>1/$gcFreq</command> Aufrufe ausgeführt. Standard ist 100.
  161. </para>
  162. </listitem>
  163. <listitem>
  164. <para>
  165. <methodname>setFont($font)</methodname> und <methodname>getFont()</methodname>
  166. erlauben es die Schrift zu Spezifizieren die man verwenden will.
  167. <varname>$font</varname> sollte ein voll qualifizierter Pfad zu der
  168. Schriftart-Datei sein. Dieser Wert wird benötigt; das <acronym>CAPTCHA</acronym>
  169. wird während der Erzeugung eine Ausnahme werfen wenn die Schriftdatei nicht
  170. spezifiziert wurde.
  171. </para>
  172. </listitem>
  173. <listitem>
  174. <para>
  175. <methodname>setFontSize($fsize)</methodname> und
  176. <methodname>getFontSize()</methodname> erlauben es die Schriftgröße in Pixel zu
  177. Spezifizieren die verwendet wird wenn das <acronym>CAPTCHA</acronym> erzeugt
  178. wird. Der Standardwert ist 24px.
  179. </para>
  180. </listitem>
  181. <listitem>
  182. <para>
  183. <methodname>setHeight($height)</methodname> und
  184. <methodname>getHeight()</methodname> erlauben es die Höhe in Pixel zu
  185. Spezifizieren die das erzeugte <acronym>CAPTCHA</acronym> Bild haben soll. Der
  186. Standardwert ist 50px.
  187. </para>
  188. </listitem>
  189. <listitem>
  190. <para>
  191. <methodname>setWidth($width)</methodname> und
  192. <methodname>getWidth()</methodname> erlauben es die Breite in Pixel zu
  193. Spezifizieren die das erzeugte <acronym>CAPTCHA</acronym> Bild haben soll. Der
  194. Standardwert ist 200px.
  195. </para>
  196. </listitem>
  197. <listitem>
  198. <para>
  199. <methodname>setImgDir($imgDir)</methodname> und
  200. <methodname>getImgDir()</methodname> erlauben es das Verzeichnis für das
  201. Speicher der <acronym>CAPTCHA</acronym> Bilder zu spezifizieren. Der
  202. Standardwert ist "<filename>./images/captcha/</filename>", was relativ zum
  203. Bootstrapskript zu sehen ist.
  204. </para>
  205. </listitem>
  206. <listitem>
  207. <para>
  208. <methodname>setImgUrl($imgUrl)</methodname> und
  209. <methodname>getImgUrl()</methodname> erlauben es den Relativen Pfad zum
  210. <acronym>CAPTCHA</acronym> Bild für die Verwendung im <acronym>HTML</acronym>
  211. Markup zu spezifizieren. Der Standardwert ist
  212. "<filename>/images/captcha/</filename>".
  213. </para>
  214. </listitem>
  215. <listitem>
  216. <para>
  217. <methodname>setSuffix($suffix)</methodname> und
  218. <methodname>getSuffix()</methodname> erlauben es die Endung des Dateinamens für
  219. das <acronym>CAPTCHA</acronym> Bild zu spezifizieren. Der Standardwert ist
  220. "<filename>.png</filename>". Beachte: Das Ändern dieses Wertes wird den Typ des
  221. erzeugten Bildes nicht ändern.
  222. </para>
  223. </listitem>
  224. <listitem>
  225. <para>
  226. <methodname>setDotNoiseLevel($level)</methodname> und
  227. <methodname>getDotNoiseLevel()</methodname> erlauben es zusammen mit
  228. <methodname>setLineNoiseLevel($level)</methodname> und
  229. <methodname>getLineNoiseLevel()</methodname> zu kontrollieren wieviel
  230. "Rauschen" in der Form von zufälligen Punkten und Linien im Bild enthalten sein
  231. sollen. Jede Einheit von <varname>$level</varname> erzeugt einen zufälligen
  232. Punkt oder eine Linie. Der Standard ist 100 Punkte und 5 Linien. Das Rauschen
  233. wird zweimal hinzugefügt - vor und nach der Umwandlung der Verzerrung des
  234. Bildes.
  235. </para>
  236. </listitem>
  237. </itemizedlist>
  238. <para>
  239. Alle der obigen Optionen können an den Konstruktor übergeben werden indem einfach der
  240. Präfix der 'set' Methode entfernt wird und der Anfangsbuchstabe kleingeschrieben wird:
  241. "suffix", "height", "imgUrl", usw.
  242. </para>
  243. </sect2>
  244. <sect2 id="zend.captcha.adapters.recaptcha">
  245. <title>Zend_Captcha_ReCaptcha</title>
  246. <para>
  247. Der <classname>Zend_Captcha_ReCaptcha</classname> Adapter verwendet
  248. <link linkend="zend.service.recaptcha">Zend_Service_ReCaptcha</link> um
  249. <acronym>CAPTCHA</acronym>s zu erzeugen und zu prüfen. Es bietet die folgenden Methoden
  250. an:
  251. </para>
  252. <itemizedlist>
  253. <listitem>
  254. <para>
  255. <methodname>setPrivKey($key)</methodname> und
  256. <methodname>getPrivKey()</methodname> erlauben es den privaten Schlüssel zu
  257. spezifizieren der für den ReCaptcha Service verwendet werden soll. Er muß während
  258. der Erstellung spezifiziert werden, auch wenn er jederzeit überschrieben werden
  259. kann.
  260. </para>
  261. </listitem>
  262. <listitem>
  263. <para>
  264. <methodname>setPubKey($key)</methodname> und
  265. <methodname>getPubKey()</methodname> erlauben es den öffentlichen Schlüssel zu
  266. spezifizieren der mit dem ReCaptcha Service verwendet werden soll. Er muß während
  267. der Erstellung spezifiziert werden, auch wenn er jederzeit überschrieben werden
  268. kann.
  269. </para>
  270. </listitem>
  271. <listitem>
  272. <para>
  273. <methodname>setService(Zend_Service_ReCaptcha $service)</methodname> und
  274. <methodname>getService()</methodname> erlauben es das ReCaptcha Serviceobjekt zu
  275. setzen und erhalten.
  276. </para>
  277. </listitem>
  278. </itemizedlist>
  279. </sect2>
  280. </sect1>