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 = 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 のレンダリングや検証は自動化されます。