コメントスパム対策(英語をはじく)

英語のコメントスパムのみをはじく改造です。
禁止ワードではじく」改造よりも簡単に出来、英語のコメントスパムに対してだけなら「禁止ワード」よりも確実です。

Blogn(ぶろぐん)v1.9.2 の場合

コメント欄

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文字以下の場合はエラーを返します。
また句読点がない場合も、同様にエラーを返します。


サイト作成のヒント集に戻る