ホーム > タグ > reCAPTCHA
reCAPTCHA
CakePHPでreCAPTCHAによる画像認証を実装するまで
- 2009年5月13日 4:05 AM
- 未分類
GWからCakePHPでつくりはじめたWebサービスで、画像認証を実装したいと思って、以前から気になっていたreCAPTCHAを導入した。びっくりするくらい簡単だったけど、意外とreCAPTCHA実装の記事が少ないので、丁寧に解説します。
reCAPTCHAってなんだって人はこちらをどうぞ。
なお、CakePHPは1.2を使ってます。
1. まずは登録
reCAPTCHAを使うにはWebサイトでアカウントを作る必要があります。
まずはhttp://recaptcha.net/へアクセスし、「USE reCAPTCHA ON YOUR SITE」へ。
「Sign up Now!」へ。
「Sign up」へ。
ユーザー名、パスワード、パスワード再入力、連絡先メールアドレス、そしてもちろんreCAPTCHAによる画像認証を入力して「Sign up Now!」へ。
次に、どのドメインでreCAPTCHAを使うかを聞いてきます。たぶんここで入れたドメイン以外からの検証リクエストは受け付けないんでしょう(少なくともlocalhostからは受付けてましたが)。
親ドメインを入れとけばサブドメインでも使えるし、一つのアカウントで複数のドメインを登録できるし、大量のドメインから使うんだったら「Enable this key on all domains (global keys)」にチェックを入れとけば、ドメインの制限は受けないようです。
入力したら「Create Key」へ。
これで登録完了です!
「Public Key」(公開鍵)と「Private Key」(秘密鍵)は実装のさいに使用します。「Public Key」(公開鍵)は別に誰に知られてもまったく問題ないですが、「Private Key」(秘密鍵)は絶対に知られないようにしましょう(でないと認証の意味ないです)。
なお、ここで表示される情報はメニューの「MY ACCOUNT」からいつでも確認できます。
2. PHP用のライブラリを用意する
メニューの「RESOURCES」に「PHP」の項目があるので、そこへ。
「Download」へ。
Google Codeに飛ぶのでこのzipをダウンロードします。
zipを展開するといくつかファイルが出てきます。
この中の「recaptchalib.php」をCakePHPの/app/vendors下に置いておきます。
3. View側の実装
View側では<form></form>の中に入るように、以下のコードを書きます。
App::import('Vendor', 'recaptchalib');
$publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
echo recaptcha_get_html($publickey);
1行目はさきほどコピーしたライブラリの読み込み。
2行目はreCAPTCHAのPublic Key (公開鍵)を書きます。
3行目はreCAPTCHAのウィジェットを表示します。
たったこれだけでOK!
4. Controller側の実装
Controller側では先ほどのViewのformから呼ばれるアクション内に以下のコードを書きます。
App::import('Vendor', 'recaptchalib');
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$resp = recaptcha_check_answer(
$privatekey,
$_SERVER["REMOTE_ADDR"],
$this->params['form']['recaptcha_challenge_field'],
$this->params['form']['recaptcha_response_field']);
1行目はやはりライブラリの読み込み。
2行目はreCAPTCHAのPrivate Key (秘密鍵)を書きます。
3行目はユーザーが入力した文字列を検証します。
これで$resp->is_validに検証結果が入るので、あとはお好きなように。
ホーム > タグ > reCAPTCHA
- 2010年9月
- 2010年8月
- 2010年7月
- 2010年3月
- 2010年1月
- 2009年11月
- 2009年10月
- 2009年9月
- 2009年8月
- 2009年7月
- 2009年6月
- 2009年5月
- 2009年4月
- 2009年3月
- 2009年2月
- 2009年1月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年9月
- 2008年8月
- 2008年7月
- 2008年6月
- 2008年5月
- 2008年4月
- 2008年3月
- 2008年2月
- 2008年1月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年9月
- 2007年8月
- 2007年7月
- 2007年6月
- 2007年5月
- 2007年4月
- 2007年3月
- 2007年2月
- 2007年1月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年9月
- 2006年8月
- 2006年7月
- 2006年6月
- 2006年5月
- 2006年4月
- 2006年3月
- 2006年2月
- 2006年1月
- 2005年11月
- 2005年10月
- 2005年9月
- 2005年8月
- .NET
- 2ちゃんねる
- Amazon
- API
- Apple
- CakePHP
- CiNii
- CSS
- DIY
- Firebug
- Firefox
- flickr
- Greasemonkey
- HatebuSearch
- HTML5
- iPhone
- iTunes
- J-STAGE
- java
- JavaScript
- jQuery
- Linux
- MILAI
- mod_rewrite
- Naxos Music Library
- NDL
- Photolog
- PHP
- Pipe
- Podcast
- PORTA
- reCAPTCHA
- RSS
- ruby
- Safari
- tips
- tumblr
- Visual Basic
- Web
- WebAPI
- Webcat
- Webサービス
- Webデザイン
- Wiki
- Wikipedia
- Windows
- Wordpress
- YouTube
- かわいい
- はてな
- アーカイブ
- ゲーム
- スパム対策
- セキュリティ
- テルミン
- デバイス
- ハーモノグラフ
- パブリックドメイン
- ブックマークレット
- ブログ
- モノ
- ユーザビリティ
- ユーティリティ
- リコーダー
- リテラシー
- リリース
- レファレンス
- 作曲
- 写真
- 印刷
- 図書館
- 天文
- 学術情報
- 宗教
- 思考
- 政治
- 教育
- 文字
- 文字コード
- 文章
- 新聞
- 日記
- 本
- 本やタウン
- 楽器
- 楽譜
- 機関リポジトリ
- 物理
- 現代美術
- 社会
- 科学
- 絵
- 美術
- 色
- 芸術
- 著作権
- 言語
- 非GUI
- 音楽
- 食
- 検索
- フィード
- メタ情報









