2004年7月31日

SPAMコメント対策実施

天気:夕方より雨
本日の発電量:5.7kWh
今月の発電量:527kWh

そこそこまとまった雨になった。ひさびさに、雨合羽を着ての
ダイスケとの散歩・・・・・・・。
庭木のことを考えると雨はうれしいのだが、雨の中の散歩は
正直つらい。
さて本題。苦労しました・・・・

ググッた結果「女子十二月号」に書かれている方法でトライ。
Individual Entry Archiveの<form>と</form>の間に
<input type="hidden" name="spammer" value="goaway" />
と書き込む。
Comment Listing Templateは使用していない。
Comment Preview TemplateとComment Error Templateで該当箇所
を探すが無い。
調べてみると、
<MTCommentFields>
という変数がformの内容他を持っているらしい。
さて、それはどこにある?
いろいろ探しまくってようやく発見。
lib/MT/Template/Context.pm
のなかに2箇所あった。「comments_form」をキーワードに検索すれば
すぐに見つかるはず。
でmt-comments.cgi
use strict;
のすぐ下に
use CGI qw(:standard);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
my $data = param('spammer');
die unless ($data);
}
これで、めでたく
[error] [client 218.*.219.*] Died at /pub/www/cgi-bin/MT/mt-comments.cgi line 12.
さっそくキター。

ことろで、「preview」を押したり、コメントの投稿でエラーが出たときに
せっかく書いたコメント等が消えてしまうと言う症状が出ている場合は
<MTCommentFields preview="1">
で直る。
ベータから使っていると、blog作成時のテンプレートのバグが、その
まま残ってしまったというわけだ。

おっと、mt4i.cgiをいてているなら、こちらも修正する必要がある。
こんな感じ。
$data .= "<input type=hidden name=no value=$rowid> ";
$data .= "<input type=hidden name=eid value=$eid>";
$data .= "<input type=hidden name=spammer value=goaway>";  <----追加
$data .= "<input type=submit value='送信'>";
$data .= "</form>";

trackbacks

trackbackURL:

comments

comment form
comment form