2011年02月25日

[まんがタイム]便利な芳文社まとめ

【漫画】便利な「まんがタイム×××」のまとめ
こちらからのインスピレーションで作りました。

hbn.png
画像はこちらから: 便利な「芳文社」まとめ on Twitpic / フルサイズ

参考資料
芳文社 - Wikipedia

使った道具
Cacoo


posted by tbsmcd at 15:52| Comment(8) | TrackBack(0) | 雑文 | このブログの読者になる | 更新情報をチェックする

2011年02月03日

[CakePHP]reCAPTCHA Plugin を作った。

前回、 reCAPTCHA 入力値の判定を CakePHP の Model 内での Validation 時に行う話を書きました。それならばいっそのこと Plugin 化してしまおう、ということで作りました。reCAPTCHA API 用 PHP ライブラリを CakePHP から簡単に使おうというものです。
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
reCAPTCHA_Red.png
white
reCAPTCHA_White.png
blackglass
reCAPTCHA_Black.png
clean
reCAPTCHA_Clean.png
の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 を指定してる点でしょうか。

さほど分量があるものでもないしそもそも簡単に使えるものなのですが、多少気の利いたプラグインとして役立てばいいかな、と思っています。
posted by tbsmcd at 22:41| Comment(1) | TrackBack(0) | 技術 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。