PHPフォームで画像認証 - Securimage の使い方

2013/10/30

フォームで画像認証

概要

画像認証とは、フォームに表示した画像に書かれた英数字を正しくテキストボックスに入力しないと、フォームを送信できなくさせる認証方法です。
このような画像です。
CAPTCHA

この文字列はとても見にくく間違えることもあり面倒ですよね。
なぜこのような面倒くさい認証方法を行うのでしょうか。

スパムメール対策

フォームを設置していると、たくさんのスパムメールが送られることがあります。
スパムメールとは、大量に無差別に送られるメールで、広告などもあればウイルスに感染させるためのものもあります。

こういったスパム対策の一つとして、フォームで画像認証を行っています。
多くのスパムメールは、プログラムによりhtmlのタグや文字列を解析して自動で送信されています。
しかし、画像上の文字列はプログラミングで読み取ることが難しいのです。
そのため、画像認証を利用することでこれらの被害を大幅に減らすことができます。
そして、より読み取りにくくするために、人間の目でも見にくい文字列が記載された画像となっているのです。

Securimage の使用方法

ダウンロード

Securimageを開き、ヘッダーメニュの「Download」から当ライブラリを入手できます。
サイトを見れば分かりますが、ドキュメント(Docs)やデモ(Demo)なども用意されているので参考にしてください。
Securimage

設定方法

まずは以下のフォームを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」と表示されます。

ここまでで一番簡単な方法を紹介しましたが、この他にも設定できる項目はたくさんあります。
フォントサイズや揺らぎ度、画像サイズ、背景色、文字色、透明度などなど、簡単にいろいろな設定が行えるので試してみてください。

  • このエントリーをはてなブックマークに追加
Related

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る