43.8. Zend_Service_ReCaptcha

43.8.1. 導入

Zend_Service_ReCaptchareCAPTCHA Web Service 用のクライアントです。reCAPTCHA のサイトによると、 "reCAPTCHA is a free CAPTCHA service that helps to digitize books (reCAPTCHA はフリーな CAPTCHA サービスで、 書籍の電子化を支援しています)" とのことです。 reCAPTCHA は、ユーザにふたつの単語を入力させます。 ひとつは実際の captcha で、もうひとつはスキャンされたテキスト (OCR ソフトウェアで認識できないもの) の単語です。 ユーザが最初の単語を正しく入力したら、 おそらく 2 番目の単語も正しく入力してくれるものとみなせます。 その入力内容を使って、OCR ソフトウェアの能力を向上させるわけです。

reCAPTCHA サービスを使用するには、アカウントのサインアップ が必要です。また公開鍵と秘密鍵を作成するには、 サービスを使用するドメインを登録しなければなりません。

43.8.2. 単純な使用法

Zend_Service_ReCaptcha オブジェクトのインスタンスを作成し、 公開鍵と秘密鍵を渡します。

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

        

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

echo $recaptcha->getHTML();

        

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

$result = $recaptcha->verify(
    $_POST['recaptcha_challenge_field'], 
    $_POST['recaptcha_response_field']
);

        

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

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

        

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