コメントスパム対策3.0

コメントスハム襲来。
まあ、承認するまで表示されないのですが、投稿があった通知が来るだけでもウザイので、2.661のころに使ったコメントスパム対策のワザが懐かしくなったので試しに3.0にも導入。

「投稿の前にここをチェックしてください」

という方法でコメントスパムロボットの攻撃をかわすわけですが、まず、


Individual Entry Archive

いうテンプレートにコメント入力欄を作っているので、

<input type="checkbox" id="spamprotect" name="spamprotect" /><label for="spamprotect">投稿前にここをチェックしてください</label>

というのを投稿の「確認」のボタンの記述の直前に挿入する。

んで、

/MT/lib/MT/App/Comments.pm

に、このチェックボックスがチェックされているか判定するコードを挿入する。
3.0だと、2.661よりもはるかにソースが違うみたいで、探しにくいが試しに、231行目に同じルーチンが登場するので、そこに挿入してみることにします。

if (!$q->param('text')) {

return $app->handle_error($app->translate("Comment text is required."));

}



# Spam protection added by chrome

if (!$q->param('spamprotect')) {

return $app->handle_error($app->translate("Please check the 'Spam Protection' checkbox."));

}



my ($comment, $commenter) = _make_comment($app, $entry);

こんな感じ。

本当は、TypeKeyで認証されている人はチェックしなくてもいいようにしたいところですが、面倒なのでまずはこれで。