| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- <sect1 id="zend.captcha.adapters">
- <title>Captcha 适配器</title>
- <para>
- Zend Framework 缺省地带有下列适配器。
- </para>
- <sect2 id="zend.captcha.adapters.word">
- <title>Zend_Captcha_Word</title>
- <para>
- Zend_Captcha_Word 是个摘要适配器,它是 Dumb、Figlet 和 Image 适配器的基础。
- ,它提供了增变器用来指定字符长度、会话 TTL 、会话命名空间对象,如果你不想
- 使用 Zend_Session_Namespace,它提供了会话命名空间来用于持久。
- 另外,它封装了所有校验逻辑。
- </para>
- <para>
- 缺省地,字符长度为 8,会话超时为 5 分钟,Zend_Session_Namespace
- 用于持久(使用命名空间"Zend_Form_Captcha_<captcha ID>")。
- </para>
- <para>
- 除了 <code>Zend_Captcha_Adapter</code> 接口要求的标准方法外,
- <code>Zend_Captcha_Word</code> 还有下列方法:
- </para>
- <itemizedlist>
- <listitem><para>
- <code>setWordLen($length)</code> 和 <code>getWordLen()</code>
- 指定生成的“字符”的长度和获取当前值。
- </para></listitem>
- <listitem><para>
- <code>setTimeout($ttl)</code> 和 <code>getTimeout()</code>
- 指定会话令牌的 time-to-live 和获取当前值。<code>$ttl</code> 以秒计。
- </para></listitem>
- <listitem><para>
- <code>setSessionClass($class)</code> 和
- <code>getSessionClass()</code> 指定替代的
- <code>Zend_Session_Namespace</code> 实现来持久 captcha 令牌和获取当前值。
- </para></listitem>
- <listitem><para>
- <code>getId()</code> 获取当前令牌标识符。
- </para></listitem>
- <listitem><para>
- <code>getWord()</code> 获取用于 captcha 的生成字符,如果以前没有生成,它将生成一个。
- </para></listitem>
- <listitem><para>
- <code>setSession(Zend_Session_Namespace $session)</code> 指定一个会话对象用来持久 captcha 令牌;
- <code>getSession()</code> 获取当前会话对象。
- </para></listitem>
- </itemizedlist>
- <para>
- 所有字符 captchas 传递一个选项数组给构造器,或者把它们传递给
- <code>setOptions()</code> (或传递一个 <code>Zend_Config</code> 对象给 <code>setConfig()</code>)。
- 缺省地,可能使用所有的键 <code>wordLen</code>、 <code>timeout</code> 和
- <code>sessionClass</code> ;每个具体的实现可能定义另外的键或选项。
- </para>
- <note><para>
- 记住,Word 是个摘要类并且可能不能直接初始化。
- </para></note>
- </sect2>
- <sect2 id="zend.captcha.adapters.dumb">
- <title>Zend_Captcha_Dumb</title>
- <para>
- Dumb 适配器通常是自解释的。它提供了随机字符串需要用反序输入来校验。
- 这样,它不是一个好的 CAPTCHA 方案,只用于测试或者最后的方案。
- 它继承 <code>Zend_Captcha_Word</code>。
- </para>
- </sect2>
- <sect2 id="zend.captcha.adapters.figlet">
- <title>Zend_Captcha_Figlet</title>
- <para>
- Figlet 适配器利用 <link
- linkend="zend.text.figlet">Zend_Text_Figlet</link> 来展示一个
- Figlet 给用户。Figlet captchas 只限于字符。
- </para>
- <para>
- 传递给构造器的选项也可以传递给适配器使用的 <link
- linkend="zend.text.figlet">Zend_Text_Figlet</link> 对象。
- 请参考关于配置选项的细节的文档。
- </para>
- </sect2>
- <sect2 id="zend.captcha.adapters.image">
- <title>Zend_Captcha_Image</title>
- <para>
- Image 适配器使用生成的字符并解析为图像,并把它变换成难以自动解密。
- 它需要 <ulink url="http://php.net/gd">GD extension</ulink>,使用
- TrueType 或 Freetype 支持的编译。目前,Image 适配器只能产生 PNG 图像。
- </para>
- <para>
- <code>Zend_Captcha_Image</code> 集成
- <code>Zend_Captcha_Word</code>,并附加了下列方法:
- </para>
- <itemizedlist>
- <listitem><para>
- <code>setExpiration($expiration)</code> 和
- <code>getExpiration()</code> 指定 captcha 图像可以保留在文件系统
- 中的最大生命周期。一般长于会话的生命周期。每次调用 captcha 对象,
- 垃圾收集就运行一次,过期的图像就被清除。过期值以秒计。
- </para></listitem>
- <listitem><para>
- <code>setGcFreq($gcFreq)</code> 和 <code>getGcFreg()</code>
- 指定垃圾收集运行的频度。每 <code>1/$gcFreq</code> 垃圾收集就运行一次(缺省值为 100)。
- </para></listitem>
- <listitem><para>
- <code>setFont($font)</code> 和 <code>getFont()</code>
- 指定要用的字体。它是到字体文件的全路径。如果没有设置这个值,captcha
- 就在生成的时候抛出异常。字体是必需的。
- </para></listitem>
- <listitem><para>
- <code>setFontSize($fsize)</code> 和 <code>getFontSize()</code>
- 指定字体尺寸,以象素为单位,用于生成 captcha。缺省值为 24px。
- </para></listitem>
- <listitem><para>
- <code>setHeight($height)</code> 和 <code>getHeight()</code>
- 指定生成 captcha 图像的高度,以象素为单位。缺省值为 50px。
- </para></listitem>
- <listitem><para>
- <code>setWidth($width)</code> 和 <code>getWidth()</code>
- 指定生成 captcha 图像的宽度,以象素为单位。缺省值为 200px 。
- </para></listitem>
- <listitem><para>
- <code>setImgDir($imgDir)</code> 和 <code>getImgDir()</code>
- 指定 captcha 图像存储的目录。缺省为 "./images/captcha/" ,相对于引导(bootstrap)脚本。
- </para></listitem>
- <listitem><para>
- <code>setImgUrl($imgUrl)</code> 和 <code>getImgUrl()</code>
- 指定用于 HTML 标记语言的 captcha 图像的相对路径。 缺省为 "/images/captcha/"。
- </para></listitem>
- <listitem><para>
- <code>setSuffix($suffix)</code> 和 <code>getSuffix()</code>
- 指定文件名后缀。缺省为 ".png" 。注:它的改变不影响产生的图像类型。
- </para></listitem>
- </itemizedlist>
- <para>
- 所有上述选项都可作为选项传递给构造器,只要去掉 'set' 方法前缀并
- 把首字母变成小写:如 "suffix"、 "height"、"imgUrl" 等。
- </para>
- </sect2>
- <sect2 id="zend.captcha.adapters.recaptcha">
- <title>Zend_Captcha_ReCaptcha</title>
- <para>
- ReCaptcha 适配器利用 <link
- linkend="zend.service.recaptcha">Zend_Service_ReCaptcha</link>
- 来生成校验 captchas。它有下列方法:
- </para>
- <itemizedlist>
- <listitem><para>
- <code>setPrivKey($key)</code> 和 <code>getPrivKey()</code>
- 让你指定和 ReCaptcha 服务一起使用的私钥。这必需在构造期间指定,尽管任何时候它都可以被覆盖。
- </para></listitem>
- <listitem><para>
- <code>setPubKey($key)</code> 和 <code>getPubKey()</code>
- 让你指定和 ReCaptcha 服务一起使用的公钥。这必需在构造期间指定,尽管任何时候它都可以被覆盖。
- </para></listitem>
- <listitem><para>
- <code>setService(Zend_Service_ReCaptcha $service)</code> 和
- <code>getService()</code> 让你指定并和 ReCaptcha 服务对象交互使用。
- </para></listitem>
- </itemizedlist>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|