| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.captcha.operation">
- <title>Captcha の方法</title>
- <para>
- すべての <acronym>CAPTCHA</acronym> アダプタは
- <classname>Zend_Captcha_Adapter</classname> を実装しています。
- これは次のようなインターフェイスです。
- </para>
- <programlisting language="php"><![CDATA[
- interface Zend_Captcha_Adapter extends Zend_Validate_Interface
- {
- public function generate();
- public function render(Zend_View $view, $element = null);
- public function setName($name);
- public function getName();
- public function getDecorator();
- // Zend_Validate_Interface のための追加のメソッド
- public function isValid($value);
- public function getMessages();
- public function getErrors();
- }
- ]]></programlisting>
- <para>
- name アクセサを使用して、<acronym>CAPTCHA</acronym> の識別子を設定したり取得したりします。
- <methodname>getDecorator()</methodname> を使用して <classname>Zend_Form</classname> のデコレータを指定します。
- 名前、あるいは実際のデコレータオブジェクトを返します。
- しかし、本当に大事なのは <methodname>generate()</methodname>
- と <methodname>render()</methodname> です。
- <methodname>generate()</methodname> は、<acronym>CAPTCHA</acronym> トークンを作成します。
- 通常は、このトークンをセッションに保存し、
- その後のリクエストの内容と比較することになります。
- <methodname>render()</methodname> は <acronym>CAPTCHA</acronym> の情報を
- (画像や figlet、なぞなぞなどの形式で) レンダリングします。
- </para>
- <para>
- 典型的な使用例は、次のようになります。
- </para>
- <programlisting language="php"><![CDATA[
- // Zend_View インスタンスを作成します
- $view = new Zend_View();
- // 最初のリクエスト
- $captcha = new Zend_Captcha_Figlet(array(
- 'name' => 'foo',
- 'wordLen' => 6,
- 'timeout' => 300,
- ));
- $id = $captcha->generate();
- echo "<form method=\"post\" action=\"\">";
- echo $captcha->render($view);
- echo "</form>";
- // それ以降のリクエスト
- // すでに captcha が準備済みで、$_POST['foo'] の中身が
- // 次のようなキー/値の配列になっているものとします
- // id => captcha ID, input => captcha value
- if ($captcha->isValid($_POST['foo'], $_POST)) {
- // 正解!
- }
- ]]></programlisting>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|