概要
- software name
- zubotcha_m
- version
- 1.0
- included files
-
zubotcha_m/ + zubotcha_m.php + printer.php + readme.txt + font/ + mplus-2p-light.ttf - php version
- 4.1over + GD2
- licence
- BSD
- url
- http://u.xao.jp/zubotcha_m
- blog url
- http://blog.xao.jp/blog/?p=67
- author
- zuborawka
- created
- 2009-10-11
- info@u.xao.jp
- language
- japanese
- characterset
- utf-8
- font
- http://mplus-fonts.sourceforge.jp/
- Thanks !
使用目的
フォームでデータを送信する際に、ユーザーに画像上の文字を認識してもらい、それを正しく入力することで、スパム投稿を軽減させるために用います。
主に、携帯端末のユーザーを対象にしています。
特徴
- 携帯端末を念頭に置いたため、クッキーは使用していません。
- ユーザーの利便性を優先し、数字のみの入力にしています。
- 極力簡単に実装できるようにしています。
- 多くの項目をカスタマイズできます。
設定可能なパラメータ
簡単な設定でいくつかの設定を任意に変更可能です。詳しくは、zubotcha_m.php を直接ご覧ください。以下、よく使われるであろう主な項目です。
- 数字の桁数(1から8まで)
- 有効時間
- 画像の縦横それぞれの大きさ
- 文字の大きさ
- 画像の背景色、文字色
- 文字のランダムな傾きの範囲
なお、これらはいずれもファイルを直接書き換えていただく必要があります。
使用方法
目次
- [1]ファイルの設定方法
- [2]ファイルの設置方法
- [3]画像出力時の記述方法
- [4]入力認証時の記述方法
[1]ファイルの設定方法
zubotcha_m.php 内の以下の変数を必ず再設定します。
ZubotchaM::$webpath_to_printer
ZubotchaM::$hash_seed
そのほかの変数は、必要に応じて設定します。
初期状態で問題は無いはずですが、問題があればご報告いただけると幸いです。
[2]ファイルの設置方法
zubotcha_m.php, printer.php の2つのファイルと、font ディレクトリ(フォントファイル mplus-2p-light.ttf を含む)を同じ階層に保存します。
例
lib/
zubotcha_m/
+ zubotcha_m.php
+ printer.php
+ font/
+ mplus-2p-light.ttf
設置箇所はパブリックな位置であれば問題ありません。
セキュアな位置に設置するのであれば、以下に注意してください。
- printer.php には、http でアクセスできる必要があります。つまり、上述した
でアクセスできなくてはなりません。ZubotchaM::$webpath_to_printer - zubotcha_m.php は、認証コードを記述する場合や、認証を行う場合に内部のPHPスクリプトから呼び出せる必要があります。
- font ディレクトリ内の ttf ファイルには、zubotcha_m.php からアクセスできなくてはなりません。
[3]画像出力時の記述方法
ZubotchaM のインスタンスを生成し、ZubotchaM::get_captcha_code() メソッドでHTMLコードを取得します。
このHTMLコードには、画像認証に必要最小限のコードがすべて記述されているので、そのままHTML文書のFORM内に書き出します。
例
※zubotcha_m.php へのパスは適宜書き換えてください
--------------------------------------------------
input.php
--------------------------------------------------
<html>
<head>
<title>title</title>
</head>
<body>
<form action='confirm.php' method='post'>
<p>
<textarea name='message' rows='10' cols='10'>メッセージをどうぞ</textarea>
</p>
<p>
スパム防止のため、下の画像にある4桁の数字を入力してから送信してください。
</p>
<p>
<?php
include_once( PATH_TO_ZUBOTCHA . "zubotcha_m.php" );
$zbc = new ZubotchaM();
echo $zbc -> get_captcha_code();
?>
</p>
<p>
<input type='submit' name='submit' value='送信'>
</p>
</form>
</body>
</html>
--------------------------------------------------
[4]入力認証時の記述方法
ZubotchaM のインスタンスを生成し、ZubotchaM::certify() メソッドで真偽値を得ます。
有効時間以内に正しい入力がなされていた場合にのみ true が帰ります。
false の場合、有効時間を超過しているか、入力値が誤りであるかのいずれかです。
そのどちらであるかを知るためには、ZubotchaM::$exception を取得してください。
例
※zubotcha_m.php へのパスは適宜書き換えてください
--------------------------------------------------
confirm.php
--------------------------------------------------
<?php
include_once( PATH_TO_ZUBOTCHA . "zubotcha_m.php" );
$zbc = new ZubotchaM();
if( $zbc -> certify() )
{
// 認証に成功しました。
// 成功した場合の処理を記述してください。
}
else
{
// 認証に失敗しました。
// 失敗した場合の処理を記述してください。
// 失敗した内容によってさらに分岐させる場合は、以下のように記述してください。
if( $zbc -> exception == 'timeover' )
{
// 時間が超過したために失敗しました。入力値の検証は行っていません。
}
elseif( $zbc -> exception == 'invalid' )
{
// 入力した文字が正しくありません。時間内の送信ではあります。
}
else
{
// この処理は本来はありえません。
}
}
// 後略
--------------------------------------------------
