概要

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
e-mail
info@u.xao.jp
language
japanese
characterset
utf-8
font
http://mplus-fonts.sourceforge.jp/
Thanks !

使用目的

フォームでデータを送信する際に、ユーザーに画像上の文字を認識してもらい、それを正しく入力することで、スパム投稿を軽減させるために用います。
主に、携帯端末のユーザーを対象にしています。

特徴

設定可能なパラメータ

簡単な設定でいくつかの設定を任意に変更可能です。詳しくは、zubotcha_m.php を直接ご覧ください。以下、よく使われるであろう主な項目です。

なお、これらはいずれもファイルを直接書き換えていただく必要があります。

使用方法

目次

[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

設置箇所はパブリックな位置であれば問題ありません。
セキュアな位置に設置するのであれば、以下に注意してください。

[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
  {
    // この処理は本来はありえません。
  }
}

// 後略
--------------------------------------------------