tbsmcd/recaptcha_plugin - GitHub使い方は README にも書いてありますが、
1. reCAPTCHA キーを取得。
こちらからサインインして取得します。PUBLIC と PRIVATE があるので両方ともメモってください。
2. ライブラリファイルを設置
こちらからダウンロード・解凍し、recaptcha_plugin/vendors/recaptchalib.php となるように設置してください。
3. 設定ファイルの記述
1 で取得したキーを recaptcha_plugin/config/key.php に記述します。
$config = array( 'Recaptcha' => array( 'Public' => 'YOUR_RECAPTCHA_PUBLIC_KEY', 'Private' => 'YOUR_RECAPTCHA_PRIVATE_KEY', ), );key.php.default をコピーしてもらえばいいと思います。
4. コントローラへの記述
reCAPTHCA を使用するフォームのコントローラに
public $components = array('RecaptchaPlugin.Recaptcha'); public $helpers = array('RecaptchaPlugin.Recaptcha');のように記述します。
5. ヘルパーへの記述
reCAPTCHA を使用する form 内に
echo $this->Recaptcha->show(); // reCAPTCHA 本体の出力 echo $this->Recaptcha->error(); // Validation メッセージ出力このように記述します。Recaptcha->show() はデフォルトでテーマ 'red' を使用しますが、show('white') のような形でテーマを指定することが出来ます。使用できるテーマは
red
white
blackglass
clean
の4種類です。
これは何をしているのか?
→基本的には前回の記事と同じく、 reCAPTCHA 用の Validation を追加しています。
多少変わった点といえば、 ValidationBehavior で
function beforeValidate(&$model) { $model->validate['recaptcha_response_field'] = array( 'checkRecaptcha' => array( 'rule' => array('checkRecaptcha', 'recaptcha_challenge_field'), 'message' => 'You did not enter the words correctly. Please try again.', ), ); }という形でフックして Validation を追加している点と RecaptchaComponent で
function startup(&$controller) { $modelClass = $controller->modelClass; if (!empty($controller->params['form']['recaptcha_challenge_field']) && !empty($controller->params['form']['recaptcha_response_field'])) { $controller->data[$modelClass]['recaptcha_challenge_field'] = $controller->params['form']['recaptcha_challenge_field']; $controller->data[$modelClass]['recaptcha_response_field'] = $controller->params['form']['recaptcha_response_field']; } $controller->$modelClass->Behaviors->attach('RecaptchaPlugin.Validation'); }というように Model にフォーム値を渡しつつ先の ValidationBehavior を指定してる点でしょうか。
さほど分量があるものでもないしそもそも簡単に使えるものなのですが、多少気の利いたプラグインとして役立てばいいかな、と思っています。