トラックバックURL: | http://jemi.s5.xrea.com/mt/mt-tb.cgi/303 |
今日からコメントはアルファベットのみでは受け付けなくなりました。
さて、どの程度効果的でしょうか。
lib/MT/App/Comments.pm
のある部分に3行程度のコードを記述することで実現。
あえてコードは出しませんが、正規表現でコメントテキストがアルファベットのみである、と判断されればエラー返すという至極単純なものです。
でも別に出し惜しみすることもないか?? と思った。まーいっか! こんな感じです。
lib/MT/App/Comments.pm
75行目からを書き換え。
if (!$q->param('text')) { return $app->handle_error($app->translate("Comment text is required.")); } # begin else { my $text = $q->param('text'); unless ($text =~ /[\x8E]|[\xA1-\xFE]/) { $app->log("Invalid comment from: ".$q->param('email')); return $app->handle_error($app->translate("Invalid comment text.")); } } # end
うーん、なんて簡単なんだ。日本人スパマーには何の効果もないところが弱点(笑
(2004-04-13)
コメント拒否の際に、ログにその旨を残す処理を追加。これでバカヤローが何人引っかかるか目視でききるぞ。そういえば、他人の書いたコードに手を入れるなんて久しぶりです。Movable Typeのコードはパッと見ではキレイではないですが、結構理解しやすいかも、と思いました。
そして、これをプラグインに出来ないかと画策して、MTBlacklistのコードを参考に見てみたんですが、それ以前の問題発生。perl5のオブジェクト指向をよく知らないことに気付きました。もともとオブジェクト指向言語でないだけに、なんか変な感じ。inheritedとか、overrideと同様のキーワードをperlの場合、どう使えばいいのだか。
上の改造と同様のことをプラグインレベルでやる場合、MT::App::Commentsのpostメソッドをオーバーライドすればよさげなのですが……むうー、perlがキライになりそう(^^;;
そういえば、perlでおれが大嫌いなモットーがあります。
「やり方は1通りではない。」
正直、こんなモットーは混乱のモトなだけなんで、一通りにしてほしい。と言っても今さらですが。
参考リンク:
スパムコメント対策@BLOG質問箱
↑アイディアはここから頂きました(^^;