PHPメモ:英字スパム対策(修正)

修正しました。

だいぶ前ですが、フィロの村のPHPで作った掲示板とリンク依頼に大量の英字スパムが来たので対策をした内容のメモです。
実は以前に同内容の記事を書いていましたが、すり抜けれるようだったので修正したのもです。
まぁ1行だけで済むコードなんですけどねーι

以下のコードは前回書いた「日本語が含まれているかチェック」するものです。

//(修正前)
//$textに数字と英字、記号以外が含まれる時だけ処理を行う
if(mb_ereg_match("[^0-9a-zA-Z!-/]",$text)){
	//処理
}

前回はこれで対処できていると思っていたのですが、どうもこの正規表現([^0-9a-zA-Z!-/])だと一部の記号が入ればすり抜けられるようでした。
以下は修正したコードです。

//(修正後)
if(ereg("[^ -~]",$text)){
	//処理
}

これはPHPというか正規表現の修正ですね。
ASCIIコードの並びを調べるとわかりますが、結構対象から外れる記号があったようです。
下記に正規表現について簡単にまとめておきます。

*		0 回以上の繰り返し
+		1 回以上の繰り返し
?		0又は1回の繰り返し

-		範囲
^		以外にマッチ

[0-9]		数字にマッチ
[a-zA-Z]		英字にマッチ
[!-/]		!"#$%&'()*+,-./にマッチ
[ -~]		半角文字全て(スペース〜チルダ)にマッチ

相変わらず説明下手ですが、以上です。
…あれ?PHPメモというか正規表現メモになってないか…?



コメント
コメントする








    
この記事のトラックバックURL
トラックバック