Zend_Captcha-Adapters.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24604 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.captcha.adapters">
  5. <title>Adaptateurs CAPTCHA</title>
  6. <para>Les adaptateurs suivants sont fournis dans Zend Framework par défaut.</para>
  7. <sect2 id="zend.captcha.adapters.word">
  8. <title>Zend_Captcha_Word</title>
  9. <para>
  10. <classname>Zend_Captcha_Word</classname> est un adaptateur abstrait qui sert de classe
  11. de base pour la plupart des autres adaptateurs <acronym>CAPTCHA</acronym>. Il fournit
  12. des mutateurs permettant de spécifier la taille du mot le <acronym>TTL</acronym> de
  13. session, l'objet d'espace de noms de session à utiliser, et la classe d'espace de noms
  14. de session à utiliser pour la persistance si vous ne souhaitez pas utiliser
  15. <classname>Zend_Session_Namespace</classname> pour la persistance.
  16. <classname>Zend_Captcha_Word</classname> encapsule toute la logique de validation.
  17. </para>
  18. <para>
  19. Par défaut la taille du mot est de 8 caractères, le timeout de session est de 5
  20. minutes et l'objet d'espace de nom de session utilisé est
  21. <classname>Zend_Session_Namespace</classname> (avec l'espace de nom
  22. ("<classname>Zend_Form_Captcha_&lt;captcha ID&gt;</classname>").
  23. </para>
  24. <para>
  25. En plus des méthodes standards fournies par
  26. <classname>Zend_Captcha_Adapter</classname>, <classname>Zend_Captcha_Word</classname>
  27. propose les méthodes suivantes&#160;:
  28. </para>
  29. <itemizedlist>
  30. <listitem>
  31. <para>
  32. <methodname>setWordLen($length)</methodname> et
  33. <methodname>getWordLen()</methodname> vous permettent de piloter la taille du
  34. "mot" généré, en caractères.
  35. </para>
  36. </listitem>
  37. <listitem>
  38. <para>
  39. <methodname>setTimeout($ttl)</methodname> et
  40. <methodname>getTimeout()</methodname> vous donnent la main sur le temps-de-vie
  41. du jeton de session. <varname>$ttl</varname> est exprimé en secondes.
  42. </para>
  43. </listitem>
  44. <listitem>
  45. <para>
  46. <methodname>setUseNumbers($numbers)</methodname> et
  47. <methodname>getUseNumbers()</methodname> vous permettent de spécifier les
  48. chiffres seront considérés comme des caractères possibles pour la partie
  49. aléatoire ou si seules les lettres seront utilisées.
  50. </para>
  51. </listitem>
  52. <listitem>
  53. <para>
  54. <methodname>setSessionClass($class)</methodname> et
  55. <methodname>getSessionClass()</methodname>
  56. vous permettent de piloter la classe de session, si vous désirez utiliser une
  57. alternative à <classname>Zend_Session_Namespace</classname>, ceci dans le but
  58. de faire persister le jeton <acronym>CAPTCHA</acronym> en session.
  59. </para>
  60. </listitem>
  61. <listitem>
  62. <para>
  63. <methodname>getId()</methodname> retourne l'identifiant du jeton actuel.
  64. </para>
  65. </listitem>
  66. <listitem>
  67. <para>
  68. <methodname>getWord()</methodname> retourne le mot généré utilisé avec le
  69. <acronym>CAPTCHA</acronym>. Il sera généré pour vous si aucun n'existe déjà.
  70. </para>
  71. </listitem>
  72. <listitem>
  73. <para>
  74. <methodname>setSession(Zend_Session_Namespace $session)</methodname> permet
  75. d'injecter un objet de session qui sera utilisé pour faire persister le jeton
  76. de <acronym>CAPTCHA</acronym>. <methodname>getSession()</methodname> retourne
  77. l'objet de session actuellement utilisé.
  78. </para>
  79. </listitem>
  80. </itemizedlist>
  81. <para>
  82. Tous les <acronym>CAPTCHA</acronym> Word vous autorisent à passer un tableau d'options
  83. au constructeur, ou à <methodname>setOptions()</methodname> (un objet
  84. <classname>Zend_Config</classname> peut être utilisé avec
  85. <methodname>setConfig()</methodname>).
  86. Par défaut, les clés <emphasis>timeout</emphasis> <emphasis>wordLen</emphasis> et
  87. <emphasis>sessionClass</emphasis> seront utilisées.
  88. </para>
  89. <note>
  90. <para>
  91. <classname>Zend_Captcha_Word</classname> est une classe abstraite et ne peut être
  92. utilisée directement.
  93. </para>
  94. </note>
  95. </sect2>
  96. <sect2 id="zend.captcha.adapters.dumb">
  97. <title>Zend_Captcha_Dumb</title>
  98. <para>
  99. L'adaptateur <classname>Zend_Captch_Dumb</classname> propose une chaîne aléatoire qui
  100. doit être ressaisie, mais inversée. Ce n'est pas une solution
  101. <acronym>CAPTCHA</acronym> idéale (un robot peut la détourner), il devrait être utilisé
  102. comme solution de remplacement extrême, ou pour les tests. Il étend
  103. <classname>Zend_Captcha_Word</classname>.
  104. </para>
  105. </sect2>
  106. <sect2 id="zend.captcha.adapters.figlet">
  107. <title>Zend_Captcha_Figlet</title>
  108. <para>
  109. L'adaptateur <classname>Zend_Captcha_Figlet</classname> utilise
  110. <link linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link> pour
  111. présenter un captcha. Seuls les caractères alphabétiques sont utilisables.
  112. </para>
  113. <para>
  114. Les options passées au constructeur le seront pour l'objet
  115. <link linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link> que
  116. l'adaptateur va utiliser. Voyez la documentation de <link
  117. linkend="zend.text.figlet"><classname>Zend_Text_Figlet</classname></link>pour plus
  118. d'informations.
  119. </para>
  120. </sect2>
  121. <sect2 id="zend.captcha.adapters.image">
  122. <title>Zend_Captcha_Image</title>
  123. <para>
  124. L'adaptateur <classname>Zend_Captcha_Image</classname> prend le mot généré et le
  125. transforme en image difficile à analyser pour un programme informatique (robot). Pour
  126. cela, il nécessite l'<ulink url="http://php.net/gd">extension GD</ulink>,
  127. compilée avec le support TrueType et Freetype. Actuellement, l'adaptateur
  128. <classname>Zend_Captcha_Image</classname> ne génère que des images
  129. <acronym>PNG</acronym>.
  130. </para>
  131. <para>
  132. <classname>Zend_Captcha_Image</classname> étend
  133. <classname>Zend_Captcha_Word</classname>, et propose les méthodes additionnelles
  134. suivantes&#160;:
  135. </para>
  136. <itemizedlist>
  137. <listitem>
  138. <para>
  139. <methodname>setExpiration($expiration)</methodname> et
  140. <methodname>getExpiration()</methodname> vous autorisent à manipuler le temps
  141. maximum que l'image <acronym>CAPTCHA</acronym> doit rester
  142. sur le disque. En général, il s'agit d'un temps supérieur à celui de la
  143. session. Un ramasse-miettes passe régulièrement à chaque instanciation de
  144. l'objet <acronym>CAPTCHA</acronym> Image : il détruit les images arrivées à
  145. expiration. La période d'expiration doit être exprimée en secondes.
  146. </para>
  147. </listitem>
  148. <listitem>
  149. <para>
  150. <methodname>setGcFreq($gcFreq)</methodname> et
  151. <methodname>getGcFreg()</methodname> vous
  152. permettent de manipuler la fréquence de collecte du ramasse-miettes des images.
  153. Le ramasse-miettes passera à une fréquence de <command>1/$gcFreq</command>.
  154. Par défaut 1&#160;/&#160;100, soit toutes les 100 requêtes.
  155. </para>
  156. </listitem>
  157. <listitem>
  158. <para>
  159. <methodname>setFont($font)</methodname> et <methodname>getFont()</methodname>
  160. vous donnent le moyen de manipuler la police que vous souhaitez utiliser.
  161. <varname>$font</varname> doit indiquer le chemin complet vers la police à
  162. utiliser pour générer le <acronym>CAPTCHA</acronym>.
  163. Une exception sera levée si vous ne spécifiez pas ce paramètre.
  164. </para>
  165. </listitem>
  166. <listitem>
  167. <para>
  168. <methodname>setFontSize($fsize)</methodname> et
  169. <methodname>getFontSize()</methodname> servent pour spécifier et récupérer la
  170. taille de la police à utiliser (en pixels) pour générer l
  171. <acronym>CAPTCHA</acronym>. Par défaut&#160;: 24px.
  172. </para>
  173. </listitem>
  174. <listitem>
  175. <para>
  176. <methodname>setHeight($height)</methodname> et
  177. <methodname>getHeight()</methodname> servent pour spécifier et récupérer la
  178. hauteur de la police à utiliser (en pixels) pour générer le
  179. <acronym>CAPTCHA</acronym>. Par défaut&#160;: 50px.
  180. </para>
  181. </listitem>
  182. <listitem>
  183. <para>
  184. <methodname>setWidth($width)</methodname> et
  185. <methodname>getWidth()</methodname> servent pour spécifier et récupérer la
  186. largeur de la police à utiliser (en pixels) pour générer le
  187. <acronym>CAPTCHA</acronym>. Par défaut&#160;: 200px.
  188. </para>
  189. </listitem>
  190. <listitem>
  191. <para>
  192. <methodname>setImgDir($imgDir)</methodname> et
  193. <methodname>getImgDir()</methodname> vous permettent de manipuler le dossier
  194. dans lequel les images <acronym>CAPTCHA</acronym> générées
  195. seront stockées. Par défaut, il s'agit de
  196. "<filename>./images/captcha/</filename>", qui devrait être
  197. pris relativement au fichier de bootstrap du site.
  198. </para>
  199. </listitem>
  200. <listitem>
  201. <para>
  202. <methodname>setImgUrl($imgUrl)</methodname> et
  203. <methodname>getImgUrl()</methodname> vous donnent le moyen de manipuler le
  204. chemin relatif à utiliser pour la balise <acronym>HTML</acronym> servant
  205. à afficher l'image du <acronym>CAPTCHA</acronym>. Par défaut, il s'agit de
  206. "<filename>/images/captcha/</filename>".
  207. </para>
  208. </listitem>
  209. <listitem>
  210. <para>
  211. <methodname>setSuffix($suffix)</methodname> et
  212. <methodname>getSuffix()</methodname> vous donnent
  213. la main sur le suffixe à utiliser pour le nom du fichier de l'image générée par
  214. le <acronym>CAPTCHA</acronym>. Il s'agit par défaut de
  215. "<filename>.png</filename>". Note : changer ceci ne changera pas
  216. le type de l'image générée.
  217. </para>
  218. </listitem>
  219. <listitem>
  220. <para>
  221. <methodname>setDotNoiseLevel($level)</methodname> et
  222. <methodname>getDotNoiseLevel()</methodname>, avec
  223. <methodname>setLineNoiseLevel($level)</methodname> et
  224. <methodname>getLineNoiseLevel()</methodname>, vous permettent de contrôler le
  225. niveau de bruit sous forme de points et de lignes que l'image va contenir.
  226. Chaque unité de <varname>$level</varname> produit un point ou une ligne
  227. aléatoire. Les valeurs par défaut sont 100 points et 5 lignes. Le bruit est
  228. ajouté deux fois&#160;: avant et après la transformation de l'image.
  229. </para>
  230. </listitem>
  231. </itemizedlist>
  232. <para>
  233. Toutes les options ci-dessus peuvent aussi être passées en constructeur.
  234. Supprimer la partie "set" de leur méthodes, et passez leur première lettre en minuscule
  235. pour avoir les clés du tableau d'options que le constructeur utilise. ("suffix",
  236. "height", "imgUrl", etc...).
  237. </para>
  238. </sect2>
  239. <sect2 id="zend.captcha.adapters.recaptcha">
  240. <title>Zend_Captcha_ReCaptcha</title>
  241. <para>
  242. L'adaptateur <classname>Zend_Captcha_ReCaptcha</classname> utilise
  243. <link linkend="zend.service.recaptcha">Zend_Service_ReCaptcha</link> pour générer des
  244. <acronym>CAPTCHA</acronym>. Les méthodes suivantes lui sont propres&#160;:
  245. </para>
  246. <itemizedlist>
  247. <listitem>
  248. <para>
  249. <methodname>setPrivKey($key)</methodname> et
  250. <methodname>getPrivKey()</methodname> vous
  251. permettent de gérer la clé privée utilisée avec le service ReCaptcha. Cette clé
  252. doit être spécifiée en constructeur, mais peut être ensuite modifiée.
  253. </para>
  254. </listitem>
  255. <listitem>
  256. <para>
  257. <methodname>setPubKey($key)</methodname> et
  258. <methodname>getPubKey()</methodname> vous permettent
  259. de gérer la clé publique utilisée avec le service ReCaptcha. Cette clé doit
  260. être spécifiée en constructeur, mais peut être ensuite modifiée.
  261. </para>
  262. </listitem>
  263. <listitem>
  264. <para>
  265. <methodname>setService(Zend_Service_ReCaptcha $service)</methodname> et
  266. <methodname>getService()</methodname> vous permettent d'interagir directement
  267. avec l'objet service ReCaptcha utilisé par l'adaptateur.
  268. </para>
  269. </listitem>
  270. <listitem>
  271. <para>
  272. <methodname>isValid($value, $context = null)</methodname> valide l'entrée
  273. de l'utilisateur avec le service ReCaptcha. <varname>$value</varname> est un
  274. tableau avec les clés suivantes&#160;:
  275. <itemizedlist>
  276. <listitem>
  277. <para>
  278. <varname>recaptcha_challenge_field</varname> - valeur du champs
  279. de challenge de l'élément ReCaptcha (caché)
  280. </para>
  281. </listitem>
  282. <listitem>
  283. <para>
  284. <varname>recaptcha_response_field</varname> - valeur du champs
  285. correspondant à l'entré utilisateur de l'élément ReCaptcha
  286. </para>
  287. </listitem>
  288. </itemizedlist>
  289. </para>
  290. </listitem>
  291. </itemizedlist>
  292. </sect2>
  293. </sect1>