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
-string
captchaに用いるセッションのキー。デフォルトは'Kcaptcha.answer'
です。これを変更すると、手動でrender()
を使うアクションをコントローラに作らなければなりません。$model
-string
バリデーションで使うモデル名。デフォルトはコントローラの$modelClass
です。$setupHelper
-boolean
Captchaヘルパーをコントローラに自動的に追加するかどうか。デフォルトはtrue
です。$autoSetAnswer
-boolean
モデルにcaptchaの答えを自動的にセットするかどうか。デフォルトはtrue
です。
メソッド:
Captchableビヘイビア
設定:
$answerProperty
-string
captchaの答えが自動的にセットされるモデルのプロパティ名。デフォルトは'captchaAnswer'
です。$field
-string
バリデーションに使うフィールド名。the field to vlidate. デフォルトは'captcha'
です。$rule
-string
バリデーションに使うルールセット名。デフォルトは'captcha'
です。$convertKana
-boolean
true
のとき、全角の入力を半角に変換します。デフォルトは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リファレンスまで載せて、非常に長くなってしまいましたが、是非使ってみてください!