画像認証とは、フォームに表示した画像に書かれた英数字を正しくテキストボックスに入力しないと、フォームを送信できなくさせる認証方法です。
このような画像です。
この文字列はとても見にくく間違えることもあり面倒ですよね。
なぜこのような面倒くさい認証方法を行うのでしょうか。
フォームを設置していると、たくさんのスパムメールが送られることがあります。
スパムメールとは、大量に無差別に送られるメールで、広告などもあればウイルスに感染させるためのものもあります。
こういったスパム対策の一つとして、フォームで画像認証を行っています。
多くのスパムメールは、プログラムによりhtmlのタグや文字列を解析して自動で送信されています。
しかし、画像上の文字列はプログラミングで読み取ることが難しいのです。
そのため、画像認証を利用することでこれらの被害を大幅に減らすことができます。
そして、より読み取りにくくするために、人間の目でも見にくい文字列が記載された画像となっているのです。
Securimageを開き、ヘッダーメニュの「Download」から当ライブラリを入手できます。
サイトを見れば分かりますが、ドキュメント(Docs)やデモ(Demo)なども用意されているので参考にしてください。
まずは以下のフォームをHTML記述します。
<form action="" method="POST">
<img id="captcha" src="./securimage/securimage_show.php" alt="captcha" />
<input type="text" name="captcha_code" size="10" maxlength="10" />
<a href="#" onclick="document.getElementById('captcha').src = './securimage/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a>
<br />
<input type="submit" value="submit" />
</form>
imgタグでは、securimage_show.phpを読込んでいます。
このsecurimage_show.phpは、次のようなコードとなります。
require_once dirname(__FILE__) . '/securimage.php';
$img = new Securimage();
$img->show();
これで表示側は完成です。
フォームをサブミットした後のPHPの処理はこのように行います。
if (isset($_POST['captcha_code']) && $_POST['captcha_code'] == $_SESSION["securimage_code_disp"]["default"]) {
echo "OK";
}
テキストボックスで入力された文字列と、画像上の文字列が一致したら「OK」と表示されます。
ここまでで一番簡単な方法を紹介しましたが、この他にも設定できる項目はたくさんあります。
フォントサイズや揺らぎ度、画像サイズ、背景色、文字色、透明度などなど、簡単にいろいろな設定が行えるので試してみてください。