Documentation

Zend_Service_ReCaptcha - Zend_Service

Zend_Service_ReCaptcha

導入

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 オブジェクトのインスタンスを作成し、 公開鍵と秘密鍵を渡します。

Example #1 reCAPTCHA サービスのインスタンスの作成

  1. $recaptcha = new Zend_Service_ReCaptcha($pubKey, $privKey);

reCAPTCHA をレンダリングするには、 getHTML() メソッドをコールするだけです。

Example #2 reCAPTCHA の表示

  1. echo $recaptcha->getHTML();

フォームから送信されてきた内容のうち、 'recaptcha_challenge_field' と 'recaptcha_response_field' のふたつのフィールドの内容を受け取らなければなりません。 これらを、reCAPTCHA オブジェクトの verify() メソッドに渡します。

Example #3 フォームフィールドの検証

  1. $result = $recaptcha->verify(
  2.     $_POST['recaptcha_challenge_field'],
  3.     $_POST['recaptcha_response_field']
  4. );

結果が得られたら、正しいものだったかどうかを確認します。結果は Zend_Service_ReCaptcha_Response オブジェクトとなり、 このオブジェクトは isValid() メソッドを提供しています。

Example #4 reCAPTCHA の検証

  1. if (!$result->isValid()) {
  2.     // 検証に失敗
  3. }

reCAPTCHA Zend_Captcha アダプタを使うか、そのアダプタを CAPTCHA フォーム要素 のバックエンドとして使うことがもっと簡単です。 どちらの場合でも、reCAPTCHA のレンダリングや検証は自動化されます。

メールアドレスの隠蔽

Zend_Service_ReCaptcha_MailHide を使うと、 メールアドレスを隠蔽できます。メールアドレスの一部分を、 reCAPTCHA チャレンジのポップアップウィンドウに置き換えます。 チャレンジを解決すると、完全なメールアドレスがあらわれるというわけです。

このコンポーネントを使うには、 mailhide API 用の公開キーと秘密キーを生成するための » アカウント が必要です。

Example #5 mail hide コンポーネントの使用法

  1. // 隠したいメールアドレス
  2. $mail = 'mail@example.com';
  3.  
  4. // mailhide コンポーネントのインスタンスを作成し、公開キーと秘密キー
  5. // そして隠したいメールアドレスを渡します
  6. $mailHide = new Zend_Service_ReCaptcha_Mailhide();
  7. $mailHide->setPublicKey($pubKey);
  8. $mailHide->setPrivateKey($privKey);
  9. $mailHide->setEmail($mail);
  10.  
  11. // 表示します
  12. print($mailHide);

上の例の表示は "m...@example.com" のようになり、 "..." のリンクは reCAPTCHA チャレンジのポップアップウィンドウを表示します。

公開キーと秘密キーそしてメールアドレスは、クラスのコンストラクタで指定することもできます。 4 番目の引数も存在し、ここでコンポーネントのオプションを設定できます。 使用できるオプションは次の表のとおりです。

Zend_Service_ReCaptcha_MailHide のオプション
オプション 説明 期待する値 デフォルト値
linkTitle リンクの title 属性 文字列 'Reveal this e-mail address'
linkHiddenText ポップアップリンクを含める文字列 文字列 '...'
popupWidth ポップアップウィンドウの幅 int 500
popupHeight ポップアップウィンドウの高さ int 300

オプションの設定は、コンストラクタの 4 番目の引数で指定する以外にも setOptions($options) メソッドで行うこともできます。 このメソッドには、連想配列あるいは Zend_Config のインスタンスを渡します。

Example #6 多数の隠しメールアドレスの作成

  1. // mailhide コンポーネントのインスタンスを作成し、公開キーと秘密キー
  2. // そして隠したいメールアドレスを渡します
  3. $mailHide = new Zend_Service_ReCaptcha_Mailhide();
  4. $mailHide->setPublicKey($pubKey);
  5. $mailHide->setPrivateKey($privKey);
  6. $mailHide->setOptions(array(
  7.     'linkTitle' => 'Click me',
  8.     'linkHiddenText' => '+++++',
  9. ));
  10.  
  11. // 隠したいメールアドレス
  12. $mailAddresses = array(
  13.     'mail@example.com',
  14.     'johndoe@example.com',
  15.     'janedoe@example.com',
  16. );
  17.  
  18. foreach ($mailAddresses as $mail) {
  19.     $mailHide->setEmail($mail);
  20.     print($mailHide);
  21. }

Copyright

© 2006-2021 by Zend by Perforce. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.

Contacts