PHPでは画像認証をするためのライブラリがいくつか用意されているため、簡単に画像認証を
実装することができます。
画像認証とは
まず、画像認証とはなにかってことですが、ユーザ登録時などに画像に埋め込まれたコードを
入力させてボットなど機械的に登録することを防ぐための機能です。
以下のような画像です。
ダウンロード・インストール・使用方法
1. 以下からダウンロード
http://www.phpcaptcha.org/download/
2. 環境の確認
同じページで以下をダウンロードする。
securimage_test.zip
回答すると、”securimage_test.php”が現れるので、
Webでこれにアクセスすると、secureimageが動く環境かどうかを
確認してくれる。
3. 試しに使ってみる。
下のソースを記載したファイルをダウンロードしたzipファイルを解凍してできた”securimage”という
ディレクトリ配下において、webからアクセスしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<title>secureimage test</title> <div> <!-- 入力フォーム --> <form action="./test2.php" method="post"> <!-- secureimage_show.phpを呼ぶとイメージが出てくる --> <p> <img id="captcha" src="./securimage_show.php" alt="CAPTCHA Image" /> </p> <!-- コードを入力するフォーム --> <p> </p> <!-- イメージを変えるためのボタンを追加 --> <p> <a href="#">[change]</a> </p> <!-- submit ボタン --> <p> </p> <p> check($_POST['captcha_code']) == false) { echo "input error"; exit; } else { echo "success"; } } ?> </p> </form> |
ソース解説
[HTML部分]
1. セッションを有効にする
まず、最初にsesshon_start()関数を呼んでセッションを有効にしておく必要がある。
これは、画像と認証文字列の組み合わせを持続するために必要なのだろう。
2. 認証画像を出力
認証画像の出力は、以下のようにimgタグのsrc属性に”securimage_show.php”を
指定するだけです。
1 |
<img id="captcha" src="./securimage_show.php" alt="CAPTCHA Image" /> |
3. コードの入力フォーム作成
普通に作ってください。ここではname属性をcapthca_codeとしてますが、
何でも構いません。
1 |
4. 画像を変更するリンクを作成する
場合によっては文字が読み取れない画像が生成される可能性があるため、
画像を変更する機能を付けておくと親切だと思われます。
それが以下です。
1 |
<a href="#">[change]</a> |
[PHP部分]
1. コード入力があるかどうかをチェック
ここでは入力フォームとチェックを同じファイルで行っているので、
入力がない場合もあるためチェックしてます。
2. securimage.phpファイルをインクルードする
secureimageの機能を使うためにsecurimage.phpファイルをインクルード
しておく必要があります。
3. securimageのオブジェクトを生成する
この生成したオブジェクトを通してsecureimageのメソッドを使用します。
4. 入力されたコードがあっているか確認する
securimageオブジェクトのcheck()メソッドを使用して入力された
コードが正しいか確認する
$securimage->check($_POST[‘captcha_code’])でチェック。/