前 チュートリアル セッション

次 未定

 

おはようございます。給料日前はいつもぎりぎり生活のゆうきんです。

captcha(キャプチャ) というものはご存知でしょうか。

よくユーザ登録などの際に、画像中の文字を入力して下さい とか言ってくるあれです。

主にスクリプトやBOT対策のために使用されます。

だって、機械がルーチンワークで登録繰り返したらあっという間にDBいっぱいになっちゃうじゃないですか。

そこで、画像認証は必要なものなのです。

FuelPHP で使える画像認証用のライブラリが公開されているので、簡単に実装できます。やったね!

 

導入

https://github.com/carlcraig/fuel-captcha から zip ファイルを落としてきて解凍して下さい。

解凍して出来たフォルダを captcha にリネームして、 fuel/package/ に突っ込んで下さい。

これで終わりです。

 

config.php の編集

app/config/config.php に以下の項目を追加して下さい。

既に packages がある場合は、 captcha を追加するだけでいいです。

 

captcha の config を編集

ここからsimplecaptcha を使うか、recaptcha を使うかで書き方が違います。

simplecaptcha を使う場合は以下のようにします。

逆に recaptcha を使いたい場合は、 simplecaptcha と書かれている部分を recaptcha にして下さい。

この設定は、デフォルトでどっちを使うかの設定なので、特にやる必要はないですが、多く使う方を指定しておくと楽になります。

 

simplecaptcha を使用する

controller フォルダに simplecaptcha.php という名のファイルを作り以下の通りにして下さい。

captcha 用の画像を生成して、返す関数を用意しています。

なお、forge に ‘simplecaptcha’ を渡していますが、何も書かなければデフォルトの方が渡されるようになっています。

が、このファイルでは絶対に省略しないで下さい。

ファイルを作ったら、 fuel/package/captcha/config/simplecaptcha.php を以下の様に編集して下さい。

特にいじってなければ58行目にあると思います。

これは、captcha 用の画像はどれを使うのかという指定をしています。

この場合は先程の get_image 関数を指定いるわけです。

肝心の使い方は以下のようになります。

これがビューです。名前は captchatest.smarty としてます。

で、これがコントローラです。captchatest.php としてます。

Captcha::forge(‘simplecaptcha’)->html() で入力フォーム付きの HMLT を生成してくれます。

んでもって Captcha::forege(‘simplecaptcha’)->check() で入力した文字列が正しいかチェックをかけてます。

 

recaptcha を使う

私はこちらを使うのをオススメします。セキュリティの問題で・・・。

recaptcha とはgoogleさんが提供している captcha です。

まず、http://www.google.com/recaptcha にアクセスし、USE reCAPTCHA YOUR SITE をクリックして下さい。

そしたら SIGN UP をクリック、出てきた画面で recaptcha を使用したい画面のURLを入力しって、Create Key ボタンを押して下さい。

※Enable this key on all domains (global key) にチェックを付けるかドウかはTipsをよく読んでください。

ボタンを押したあとに出てきた画面で、 Public Key と Private Key をメモしておきましょう。

fuel/package/captcha/config/recaptcha.php に同じ項目があるので、メモした内容をペーストして下さい。

で、肝心の使い方なんですが、ビューとコントローラーは simplecapthca とまったく同じです。

forge 関数に渡す文字列を simplecaptcha から recaptcha に変えるだけです。

もし、デフォルトを simplecatpcha にしてて、 forge 関数ではなくも渡してないなら。デフォルトを recaptcha に変えるだけで終わりです。

 

以上で、画像認証についての説明を終わります。

では、おやすみなさい。・