Home > wordpress(フォーラム) > utaka : "MU:スパムのユーザー登録防止法"

utaka : "MU:スパムのユーザー登録防止法"

5月 6th, 2011

わたしのトコも被害を受けました。
SI CAPTCHA Anti-Spam(バージョン 2.7.1)で当初は凌いでましたが、
破られてるか、直打ちされてるようで、1日10~20件来てます。

SI CAPTCHA Anti-Spam を諦めて、
簡単な計算問題を出すタイプのプラグイン
Block Spam By Math Reloaded ( v.2.1.1 ) に変更し、
私のサイトは、日本人相手なので、半角数字を漢数字に置き換える改造を加えました。
BuddyPressにも対応していますし、携帯対応化を考えるをこちらにしてよかったかなと思ってます。
改造方法を下記に示します。よろしければ、参考にしてください
下記では 例えば 3 を 三 に置き換えてますが
 参 や さん 、弐 たす 壱  などにすれば かなりいけるかと思います。
 改造後は、UTF-8コードで保存してください

########################################
#
# Block Spam By Math Reloaded ( v.2.1.1 )
#コメントやユーザー登録の際に、計算式を出すプラグイン
#
# 半角文字を 漢数字の置き換える
#
#######################################
#
#####---- OPEN --------------------------
#wp-content/plugins/block-spam-by-math-reloaded/block-spam-by-math-reloaded.php
#
####------- FIND -------------------------
# Last Line

?>

#
## -------- Befoer Add -------------------
#

/**
 * 半角数字を漢数字に変換する(位取り記法)
 * EX.1,234,567 --> 百二十三万四千五百六十七
 * @param string $instr 半角数字
 *  小数、負数に対応;指数表記には未対応
 *  カンマは削除
 * @return string 漢数字
 *http://www.pahoo.org/e-soul/webtech/php03/php03-05-01.shtm
*/
function num2kan_decimal($instr) {
	static $kantbl1 = array(0=>'', 1=>'一', 2=>'二', 3=>'三', 4=>'四', 5=>'五', 6=>'六', 7=>'七', 8=>'八', 9=>'九', '.'=>'.', '-'=>'−');
	static $kantbl2 = array(0=>'', 1=>'十', 2=>'百', 3=>'千');
	static $kantbl3 = array(0=>'', 1=>'万', 2=>'億', 3=>'兆', 4=>'京');

	$outstr = '';
	$len = strlen($instr);
	$m = (int)($len / 4);
	//一、万、億、兆‥‥の繰り返し
	for ($i = 0; $i <= $m; $i++) {
	$s2 = '';
	//一、十、百、千の繰り返し
	for ($j = 0; $j < 4; $j++) {
		$pos = $len - $i * 4 - $j - 1;
		if ($pos >= 0) {
			$ch  = substr($instr, $pos, 1);
			$ch1 = isset($kantbl1[$ch]) ? $kantbl1[$ch] : '';
			$ch2 = isset($kantbl2[$j])  ? $kantbl2[$j]  : '';
			//冒頭が「一」の場合の処理
			if ($ch1 != '') {
					if ($ch1 == '一' && $ch2 != '') $s2 = $ch2 . $s2;
					else $s2 = $ch1 . $ch2 . $s2;
				}
			}
		}
		if ($s2 != '')  $outstr = $s2 . $kantbl3[$i] . $outstr;
	}

	return $outstr;
}

#
###----- Find -----------------------
# About Line 160

	echo '
	<div class="question">What is '. $mathvalue0 .' + '. $mathvalue1 .' ?</div>

#
## -------- Replace With  -------------------
#

	echo '
	<div class="question">計算問題 '. num2kan_decimal($mathvalue0) .' + '. num2kan_decimal($mathvalue1) .' は?(半角数字で)</div>

#
## --------  Save by the UTF-8 Code!!! -------------------
#
Comments are closed.