英語のコメントスパムのみをはじく改造です。
「禁止ワードではじく」改造よりも簡単に出来、英語のコメントスパムに対してだけなら「禁止ワード」よりも確実です。
index.php 990〜1020行目あたりに、以下の赤い文字列を追加してください
// 改行文字の統一。 $c_mes = rntobr($c_mes); // 日本語+句読点チェック if (preg_match("/[ぁ-んァ-ヶ亜-瑤]{10}/", $c_mes) && preg_match("/[、。]/", $c_mes)) { $newcomment = $c_eid."<>".gmdate("Ymd", time()+TIMEZONE)."<>".gmdate("Hi", time()+TIMEZONE)."<>".$c_name."<>".$c_email."<>".$c_mes."<>".$ip_addr."<>".$user_agent."<>".$c_url."\r\n"; //ログファイル書き込み $fp = fopen(LOGDIR.$dir."/".$cmt, "w"); flock($fp, LOCK_EX); if (strlen($newcomment)){ fputs($fp, $newcomment); } fputs($fp, implode('', $oldcomment)); fclose($fp); //コメント受信時に指定メールアドレスへ連絡 if (CINFO == 1 && trim(MADDRESS) != "") { if ($loglist = IDCheck($c_eid,0)) { $log = file(LOGDIR.substr($loglist[0],3,4)."/".$loglist[0]); list($eid, , , , , $d_title, , , , , ) = explode("<>", $log[IDSearch($c_eid, $log)]); $sub = "コメントを受信しました"; $sub = mbConv($sub,0,3); $sub = "=?iso-2022-jp?B?".base64_encode($sub)."?="; $mes = "件名:".$d_title."\n"; $mes .= "投稿者名:".$c_name."\n"; $mes .= "URL:".HOMELINK."index.php?eid=".$eid."#comments\n"; $mes .= "※このメールアドレスには返信しないでください。"; $mes = mbConv($mes,0,3); $from = SITENAME; $from = mbConv($from,0,3); $from = "=?iso-2022-jp?B?".base64_encode($from)."?="; $from = "From: $from\nContent-Type: text/plain; charset=\"iso-2022-jp\""; @mail(MADDRESS, $sub, $mes, $from); } } return 0; }else{ return 1; } }
コメント内に日本語が連続で5文字以上、なおかつ句読点が含まれていない場合、英語コメントとして処理します。
英語のスパムコメントに悩まされている場合、ほぼ確実にスパムを排除できます。
日本語コメントでも、日本語の文字が連続4文字以下の場合はエラーを返します。
また句読点がない場合も、同様にエラーを返します。