ASKA BBSで英文spamをブロックする方法
ASKA BBS。ものはいいんですけど、spamがちょっとね。
# フォーム内容をチェック local($err); if ($in{'name'} eq "") { $err .= "名前が入力されていません<br>"; } if ($in{'comment'} eq "") { $err .= "コメントが入力されていません<br>"; } if ($in{'email'} && $in{'email'}!~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) { $err .= "Eメールの入力内容が不正です<br>"; } if ($err) { &error($err); }
aska.cgiの↑この部分を、↓こうします(377384行目に1行挿入)。
# フォーム内容をチェック local($err); if ($in{'name'} eq "") { $err .= "名前が入力されていません<br>"; } if ($in{'comment'} eq "") { $err .= "コメントが入力されていません<br>"; } if ($in{'email'} && $in{'email'}!~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) { $err .= "Eメールの入力内容が不正です<br>"; } if (($in{'name'}. $in{'email'}. $in{'sub'}. $in{'comment'}. $in{'url'}) =~ /(href|casino|poker|sex|porn|xxx|viagra)/i) { $err .= "不正な文字列を検出しました<br>"; } if ($err) { &error($err); }
(href|casino|poker...)の部分に拒否したい単語を|でくくって列挙します(一部を除く日本語も可)。あんまり短い語句だと誤爆の可能性があるので注意が必要です。
ASKA以外のBBSでも同じ要領でいけます。