spamp : クラスリファレンス
メンバー関数
spamp::spamp () - コンストラクタ
spamp::__construct () - コンストラクタ
spamp::putImage () - セッションを作成しGIFイメージとクッキーを出力する
spamp::isSpam () - スパム投稿を判定する
spamp::hasSession () - セッションの確立を確認する
spamp::saveSession () - セッションを作成する
spamp::removeSession () - セッションを破棄する
spamp::removeSessionAll () - 期限切れのセッションを破棄する
spamp::isSpamCookie () - クッキーにスパムの要素があるか確認する
spamp::sendCookie () - クッキーを送信する
spamp::removeCookie () - クッキーを削除する
spamp::isAllowHost () - IPアドレスが許可IPリストに含まれるか確認する
spamp::isDenyHost () - IPアドレスが拒否IPリストに含まれるか確認する
spamp::isDenyWord () - IPアドレスが拒否ワードリストに含まれるか確認する
spamp::inNetwork () - IPアドレスがネットワークに含まれるか確認する
spamp::getRequestParams () - リクエストに関する値を返す
spamp::saveDenylog () - リクエストをログに保存する
spamp::loadDenylog () - ログファイルを読み込み配列で返す
spamp::generateClientHash () - クライアント固有のハッシュ値を返す
spamp::getMessage () - エラーメッセージを得る
spamp::version () - バージョン番号を得る
spamp::spamp ()
spamp::__construct ()
/** * @access public * @param string $filename Configration filename. */ void spamp::spamp ( [string $filename] ) void spamp::__construct ( [string $filename] )
引数 $filename で指定した設定ファイルに基づき Spamp を初期化します。
省略した場合は spamp.php と同じディレクトリの spamp.conf.php を読み込みます。設定ファイルの読み込みに失敗した場合はデフォルト値で初期化します。
'spampConf.php' のようにファイル名だけを指定するとspamp.php と同じディレクトリからファイルを探します。'/home/userdir/lib/config.php' のようなフルパス指定も可能です。また、ディレクトリだけを指定すると、該当ディレクトリの spamp.conf.php を探します。尚、相対パスによる指定はできません。
spamp::putImage ()
/** * @access public * @param string $formKey default $_SERVER['HTTP_REFERER'] * @return void */ void spamp::putImage ( [string $formKey] )
セッションを作成し、レスポンスとして 1×1px GIFイメージとクッキーを出力します。
このライブラリには、フロントコマンド access.php を用意しておりこれを用いてる限りは putImage() を直接呼ぶ必要はありません。また、putImage() は出力を終えるとそこでスクリプトを終了します。
引数 $formKey には、投稿フォームを一意に特定出来るユニークな文字列を指定します。これにより生成されるセッションIDをよりユニークなものにします。
引数を省略すると $_SERVER['HTTP_REFERER'] が用いられ URL毎に別セッションとして動作するので、複数のフォームをまとめて判定処理を簡略化するような使い方をしない限り、指定の必要はありません。
これは $formKey を引数にとる関数全てに同じことがあてはまります。
spamp::isSpam ()
/** * @access public * @param string $formKey default $Conf['formKey'] or $_SERVER['HTTP_REFERER'] * @param string $server default $Conf['server'] or $_SERVER['HTTP_HOST'] * @param string $ip default $_SERVER['REMOTE_ADDR'] * @param string $ua default $_SERVER['HTTP_USER_AGENT'] * @return int 0:No spam, 1:Cookie, 2:Session, 4:DenyHost, 8:DenyWord */ int spamp::isSpam ( [string $formKey [, string $server [, string $ip [, string $ua]]]] )
スパム投稿を判定します。
引数を元に次の順序で評価し、スパムでなければ 0 を、スパムと判定すればステップに応じた 1 以上の整数を返します。
- Cookieの待ち時間と整合性 戻り値:1
- セッションの待ち時間と有無 戻り値:2
- 許可IPリスト
- 拒否IPリスト 戻り値:4
- 拒否ワードリスト 戻り値:8
1と2でスパムと判定した場合に限って許可IPリストによるチェックを行います。許可IPリストに該当しなかった場合、これ以降の判定は行わずすぐに結果を返します。
1と2でスパムと判定されなかった場合と許可IPリストに該当する場合は、続いて4と5のチェックが行われます。すべてのチェックをパスすれば戻り値は 0 です。
さらに、スパムと判定した場合に限り、isSpam() はあえて整合性のとれてない Cookieをクライアントに送信します。これにより、一度スパムと判定したクライアントを継続してスパムと判定し続けます。
引数を省略するとそれぞれのデフォルト値で判定をおこなうので、特定の値を用いて判定処理を簡略化するような使い方をしない限り指定の必要はありません。
これはこの4つの引数をとる関数全てあてはまります。
spamp::hasSession ()
/** * @access public * @param string $formKey default $Conf['formKey'] or $_SERVER['HTTP_REFERER'] * @param string $server default $Conf['server'] or $_SERVER['HTTP_HOST'] * @param string $ip default $_SERVER['REMOTE_ADDR'] * @param string $ua default $_SERVER['HTTP_USER_AGENT'] * @return boolean */ bool spamp::hasSession ( [string $formKey [, string $server [, string $ip [, string $ua]]]] )
引数を元に、セッションが作成されているか、さらに待ち時間を経過していて且つ有効期限内がを確認します。
確立している場合は true を、確立してない場合は false を返します。
isSpam() のセッションの確認はこの関数をコールしています。引数もこれに準じており、通常指定の必要はありません。
spamp::saveSession ()
/** * @access public * @param string $formKey default $_SERVER['HTTP_REFERER'] * @param string $server default $_SERVER['HTTP_HOST'] * @param string $ip default $_SERVER['REMOTE_ADDR'] * @param string $ua default $_SERVER['HTTP_USER_AGENT'] * @return boolean */ bool spamp::saveSession ( [string $formKey [, string $server [, string $ip [, string $ua]]]] )
引数を元にセッションを作成します。
成功すれば true を、失敗すれば false を返します。
引数を省略した場合はクライアントから得た値でセッションを作成するので、hasSession () 同様、通常指定の必要はありません。
spamp::removeSession ()
/** * @access public * @param string $formKey default $_SERVER['HTTP_REFERER'] * @param string $server default $_SERVER['HTTP_HOST'] * @param string $ip default $_SERVER['REMOTE_ADDR'] * @param string $ua default $_SERVER['HTTP_USER_AGENT'] * @return boolean */ bool spamp::removeSession ( [string $formKey [, string $server [, string $ip [, string $ua]]]] )
引数で指定したセッションを破棄します。
成功すれば true を、失敗すれば false を返します。
引数を省略した場合は、接続してきたクライアントのアクティブなセッションを破棄するので、hasSession () 同様、通常指定の必要はありません。
spamp::removeSessionAll ()
/** * @access public * @param string $all true: all, false: timeout only (default) * @return boolean */ bool spamp::removeSessionAll ( [bool $all = false] )
有効期限切れのセッションを破棄します。
成功すれば true を、失敗すれば false を返します。
引数 $all に true を指定すると、有効期限に関わらずすべてのセッションを破棄します。
spamp::isSpamCookie ()
/** * @access public * @access string $cookie default $_COOKIE[$cookieName] * @return boolean */ bool spamp::isSpamCookie ( [string $cookie] )
クッキーにスパムの要素があるか確認します。
待ち時間を経過してない場合、または値の整合性が取れていない場合、いずれかでも該当すればスパムのと判断し true を返します。いずれもない場合は false を返します。
引数 $cookie を省略した場合は、クライアントのクッキーを確認します。もしクライアントがクッキーを送信してない場合は false を返します。
spamp::sendCookie ()
/** * @access public * @param boolean $spamCookie SPAM only. default false * @return boolean */ bool spamp::sendCookie ( [bool $spamCookie = false] )
クライアントにクッキーを送信します。
成功すれば true を、失敗すれば false を返します。
送信する値は設定ファイルを元に自動生成されます。
引数に true を指定すると、整合性のとれてないクッキーを送信します。
spamp::removeCookie ()
/** * @access public * @return boolean */ bool spamp::removeCookie ( void )
クッキーを削除します。
成功すれば true を、失敗すれば false を返します。
クライアント側のクッキー削除とあわせてスーパーグローバル変数 $_COOKIE[$cookieName] も一緒に削除します。
spamp::isAllowHost ()
/** * @access public * @param string $ip default $_SERVER['REMOTE_ADDR'] * @return boolean */ bool spamp::isAllowHost ( [string $ip] )
引数 $ip で指定する IPアドレスが、許可IPリスト(allow.host.php)に含まれるか確認します。
含まれていれば true を、含まれてなければ false を返します。
引数 $ip を省略した場合は、クライアントのIPアドレスを確認します。
spamp::isDenyHost ()
/** * @access public * @param string $ip default $_SERVER['REMOTE_ADDR'] * @return boolean */ bool spamp::isDenyHost ( [string $ip] )
引数 $ip で指定する IPアドレスが、拒否IPリスト(deny.host.php)に含まれるか確認します。
含まれていれば true を、含まれてなければ false を返します。
引数 $ip を省略した場合は、クライアントのIPアドレスを確認します。
spamp::isDenyWord ()
/** * @access public * @param string $word * @return boolean */ bool spamp::isDenyWord ( [string $word] )
引数 $word で指定する文字列に、拒否ワードリスト(deny.word.php)のキーワードが含まれるかどうか確認します。
含まれていれば true を、含まれてなければ false を返します。
設定ファイルの $internalEncodin で指定する文字エンコーディングでチェックをおこないますので、$word と deny.word.php の文字エンコーディングはこれに合わせます。
spamp::inNetwork ()
/** * @access public * @param string $ip IPv4 (000.000.000.000) * @param string $network IPv4 or CIDR (000.000.000.000/000) * @return boolean */ bool spamp::inNetwork ( string $ip, string $network )
引数 $ip で指定するIPアドレスが、$network に含まれるかどうか確認します。
含まれていれば true を、含まれてなければ false を返します。
$ip に指定出来るのは IPv4形式 (000.000.000.000)のみで、$network はこれに加え CIDR形式 (000.000.000.000/000) が指定出来ます。
spamp::getRequestParams ()
/** * @access public * @param int $addFlag 0: Basic params only (default), 1: $_SERVER['HTTP_*'], 2: $_POST, 3: $_SERVER['HTTP_*'] | $_POST * @return array */ array spamp::getRequestParams ( [int $addFlag = 0] )
現在のリクエストに関する値を配列で返します。
引数 $addFlag が 0 の場合は、基本値のみを返します。
フラグ 1 が立っている場合は、$_SERVER の中から、基本値に含まれない 'HTTP_' で始まる値を、キー 'http' に格納され返されます。何も無かった場合、'http' は空の配列で初期化されます。
フラグ 2 が立っている場合は、$_POST の値が、キー 'post' に格納され返されます。何も無かった場合、'post' は空の配列で初期化されます。
全ての値を得るには引数に 3 を指定します。
得られる配列はこのような構造になります。
array (
// 基本値
'sec' => time(), // タイムスタンプ
'server' => $_SERVER['HTTP_HOST'], // サーバ名
'method' => $_SERVER['REQUEST_METHOD'], // リクエストメソッド
'protocol' => $_SERVER['SERVER_PROTOCOL'], // プロトコル
'uri' => $_SERVER['REQUEST_URI'], // リクエストURI
'referer' => $_SERVER['HTTP_REFERER'], // リファーラー
'host' => $_SERVER['REMOTE_ADDR'], // クライアントのIPアドレス
'user' => $_SERVER['REMOTE_USER'], // ユーザー名
'agent' => $_SERVER['HTTP_USER_AGENT'], // ユーザーエージェント
// add $_SERVER['HTTP_*'] $addFlag = 1 or 3
'http' => array (
'HTTP_COOKIE' => '*****',
'HTTP_CONNECTION' => '*****',
...
),
// add $_POST $addFlag = 2 or 3
'post' => array (
'name' => '*****',
'email' => '*****',
...
),
)
spamp::saveDenylog ()
/** * @access public * @param string $filename Log filename. * @param int $result add result. * @return boolean */ bool spamp::saveDenylog ( [string $filename [, mix $result]] )
引数 $filename で指定したファイルに、現在のリクエストの値を保存します。
成功すれば true を、失敗すれば false を返します。
$filename が省略された場合は、設定ファイルの $denyLogFile で指定するファイルに保存します。
ファイには、getRequestParams() で得た配列が serialize形式に変換され、1行レコードの形で保存されます。
引数 $result は、追加で保存する値を指定します。このライブラリでは、isSpam() にてスパムと判定した結果(整数値)を保存するのに用いています。
設定ファイルの $denyLoggingParam が 2、または 3($_POSTを保存する)の場合、設定ファイルの $internalEncoding で指定したエンコーディングに変換の上保存されます。また、$_POSTに含まれる改行コードなどの制御文字は、" "(スペース2つ)に置き換えられます。
spamp::loadDenylog ()
/** * @access public * @param string $filename Log filename. * @return array list. */ array spamp::loadDenylog ( [string $filename] )
引数 $filename で指定したファイルを読み込み、配列で返します。
$filename が省略された場合は、設定ファイルの $denyLogFile で指定するファイルを読み込みます。
読み込めるのは、1行1レコードの serialize形式で保存されたファイルです。
spamp::generateClientHash ()
/** * @access protected * @param string $ip default $_SERVER['REMOTE_ADDR'] * @param string $ua default $_SERVER['HTTP_USER_AGENT'] * @return string */ array spamp::generateClientHash ( [$ip = null[, $ua = null]] )
引数を元に生成したクライアント固有のハッシュ値を返します。
spamp::getMessage ()
/** * @access public * @return array Error messages. */ array spamp::getMessage ( void )
このスクリプトで発生したエラーメッセージを配列で返します。
spamp::version ()
/** * @access public * @return string this version number. */ string spamp::version ( void )
Spampのバージョン番号を返します。
以下のドキュメントもあわせてご覧下さい。
