Zend_Service_ReCaptcha
は reCAPTCHA Web Service
用のクライアントです。reCAPTCHA のサイトによると、
"reCAPTCHA is a free CAPTCHA service that
helps to digitize books
(reCAPTCHA はフリーな CAPTCHA サービスで、
書籍の電子化を支援しています)" とのことです。
reCAPTCHA は、ユーザにふたつの単語を入力させます。
ひとつは実際の CAPTCHA で、もうひとつはスキャンされたテキスト
(OCR ソフトウェアで認識できないもの) の単語です。
ユーザが最初の単語を正しく入力したら、
おそらく 2 番目の単語も正しく入力してくれるものとみなせます。
その入力内容を使って、OCR ソフトウェアの能力を向上させるわけです。
reCAPTCHA サービスを使用するには、アカウントのサインアップ が必要です。また公開鍵と秘密鍵を作成するには、 サービスを使用するドメインを登録しなければなりません。
Zend_Service_ReCaptcha
オブジェクトのインスタンスを作成し、
公開鍵と秘密鍵を渡します。
reCAPTCHA をレンダリングするには、
getHTML()
メソッドをコールするだけです。
フォームから送信されてきた内容のうち、
'recaptcha_challenge_field' と 'recaptcha_response_field'
のふたつのフィールドの内容を受け取らなければなりません。
これらを、reCAPTCHA オブジェクトの verify()
メソッドに渡します。
例808 フォームフィールドの検証
$result = $recaptcha->verify( $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field'] );
結果が得られたら、正しいものだったかどうかを確認します。結果は
Zend_Service_ReCaptcha_Response
オブジェクトとなり、
このオブジェクトは isValid()
メソッドを提供しています。
reCAPTCHA
Zend_Captcha
アダプタを使うか、そのアダプタを
CAPTCHA
フォーム要素
のバックエンドとして使うことがもっと簡単です。
どちらの場合でも、reCAPTCHA のレンダリングや検証は自動化されます。
Zend_Service_ReCaptcha_MailHide
を使うと、
メールアドレスを隠蔽できます。メールアドレスの一部分を、
reCAPTCHA チャレンジのポップアップウィンドウに置き換えます。
チャレンジを解決すると、完全なメールアドレスがあらわれるというわけです。
このコンポーネントを使うには、 mailhide API 用の公開キーと秘密キーを生成するための アカウント が必要です。
例810 mail hide コンポーネントの使用法
// 隠したいメールアドレス $mail = 'mail@example.com'; // mailhide コンポーネントのインスタンスを作成し、公開キーと秘密キー // そして隠したいメールアドレスを渡します $mailHide = new Zend_Service_ReCaptcha_MailHide(); $mailHide->setPublicKey($pubKey); $mailHide->setPrivateKey($privKey); $mailHide->setEmail($mail); // 表示します print($mailHide);
上の例の表示は "m...@example.com" のようになり、 "..." のリンクは reCAPTCHA チャレンジのポップアップウィンドウを表示します。
公開キーと秘密キーそしてメールアドレスは、クラスのコンストラクタで指定することもできます。 4 番目の引数も存在し、ここでコンポーネントのオプションを設定できます。 使用できるオプションは次の表のとおりです。
表154 Zend_Service_ReCaptcha_MailHide のオプション
オプション | 説明 | 期待する値 | デフォルト値 |
---|---|---|---|
linkTitle | リンクの title 属性 | 文字列 | 'Reveal this e-mail address' |
linkHiddenText | ポップアップリンクを含める文字列 | 文字列 | '...' |
popupWidth | ポップアップウィンドウの幅 | int | 500 |
popupHeight | ポップアップウィンドウの高さ | int | 300 |
オプションの設定は、コンストラクタの 4 番目の引数で指定する以外にも
setOptions($options)
メソッドで行うこともできます。
このメソッドには、連想配列あるいは Zend_Config
のインスタンスを渡します。
例811 多数の隠しメールアドレスの作成
// mailhide コンポーネントのインスタンスを作成し、公開キーと秘密キー // そして隠したいメールアドレスを渡します $mailHide = new Zend_Service_ReCaptcha_MailHide(); $mailHide->setPublicKey($pubKey); $mailHide->setPrivateKey($privKey); $mailHide->setOptions(array( 'linkTitle' => 'Click me', 'linkHiddenText' => '+++++', )); // 隠したいメールアドレス $mailAddresses = array( 'mail@example.com', 'johndoe@example.com', 'janedoe@example.com', ); foreach ($mailAddresses as $mail) { $mailHide->setEmail($mail); print($mailHide); }