KcaptchaプラグインでさくっとCaptcha実装
Kcaptchaプラグインとは
このプラグインは、KCAPTCHAをものすごい簡単に使おうという趣旨のもと作られました。
単純な使い方ではほんとにあっという間に使うことが可能になります。
hiromi2424/CakePHP-Kcaptcha-Plugin - GitHub
上記でこのプラグインをMITライセンスで公開しています。
以下にREADMEの抜粋を訳したものを載せておきます。
インストール
pluginsディレクトリで、
git clone git://github.com/hiromi2424/CakePHP-Kcaptcha-Plugin.git kcaptcha
git submodule add git://github.com/hiromi2424/CakePHP-Kcaptcha-Plugin.git plugins/kcaptcha
とします。または、ダウンロードして手動で設置してください。
アプリケーションのvendorsディレクトリにkcaptchaを設置することによりそっちを参照することも可能です。
kcaptchaのカスタマイズした設定があるなら、この方法をとってください。
使い方
コントローラにCaptchaコンポーネントを設置してください:
<?php class PostsController extends AppController { public $components = array( 'Kcaptcha.Captcha', ); }
フォームでコンポーネントによって自動的にセットされるCaptchaヘルパーを使ってください:
<?php echo $this->Captcha->render(); echo $this->Form->input('captcha'); ?>
単純にこれで終わりです!これでPostモデルはcaptchaのためのユーザの入力のバリデーションを行うことでしょう。
更なるオプションやカスタマイズ機能については、以下のAPIリファレンスを見てください。
APIリファレンス
Captchaコンポーネント
設定:
$sessionKey-stringcaptchaに用いるセッションのキー。デフォルトは'Kcaptcha.answer'です。これを変更すると、手動でrender()を使うアクションをコントローラに作らなければなりません。$model-stringバリデーションで使うモデル名。デフォルトはコントローラの$modelClassです。$setupHelper-booleanCaptchaヘルパーをコントローラに自動的に追加するかどうか。デフォルトはtrueです。$autoSetAnswer-booleanモデルにcaptchaの答えを自動的にセットするかどうか。デフォルトはtrueです。
メソッド:
Captchableビヘイビア
設定:
$answerProperty-stringcaptchaの答えが自動的にセットされるモデルのプロパティ名。デフォルトは'captchaAnswer'です。$field-stringバリデーションに使うフィールド名。the field to vlidate. デフォルトは'captcha'です。$rule-stringバリデーションに使うルールセット名。デフォルトは'captcha'です。$convertKana-booleantrueのとき、全角の入力を半角に変換します。デフォルトはtrueです。$trim-mixed入力の前後の空白を除去するかどうか、または空白の正規表現文字列。デフォルトはマルチバイトの空白の正規表現(PCRE)です。$required-booleanキャプチャの答えが必須かどうか。requireCaptcha()を使って切り替えることも可能です。デフォルトはtrueです。$setupValidation-boolean基本的なcaptchaのためのバリデーションセットをモデルにセットするかどうか。デフォルトはtrueです。
メソッド:
最後に
最近はreCAPTCHAがよく使われるみたいですが、KCAPTCHAも昔からよく使われているもので、単純にcaptchaの機能を実装してしまいたい時に非常に便利です。
ご存知の方もいらっしゃるとは思いますが、Bakeryの記事で基本的なセットアップが載っています。:
Integrate CakePHP with Kcaptcha | The Bakery, Everything CakePHP
しかし、モデルのバリデーションでやるとなると、より多くのセットアップが必要になります。
これはそれら一連の動きを纏めたもので、非常に簡単にセットアップができるようになります。
APIリファレンスまで載せて、非常に長くなってしまいましたが、是非使ってみてください!