Scodeでコメントスパム対策
コメントを受け付けるようにするとコメントスパムが絶えない、TypeKeyでサインインした人のみコメントを受け付けるようにすると、スパムは減るが敷居が高くなってしまう・・・。
そこでScodeプラグインを導入してコメントスパム対策をします。
1.プラグインのダウンロード
Movalog PluginsからScode1.0(2006年5月現在)をダウンロードしてきます。
サイト内の「plugin」からダウンロードします。
Installation
Installation is quite simple.
1. Download theplugin
2.Extract the distribution and preserve ・・・・・
2.プラグインのアップロード
ダウンロードしたプラグインを解凍後、「php」「plugins」のフォルダをmt.cgiのあるディレクトリにアップロードします。次に「plugins」→「SCode」→「mt-scode.cgi」のパーミッションを「755」または「700」(各サーバーの設定に合わせてください)にします。
3.SCodeの設定
MovableTypeの「システム・メニュー」→「プラグイン」で「SCode」の「設定を表示」をクリックすると下のような設定画面になります。
・Temp Directory・・・セキュリティコードの保存先
デフォルトでは、.tmp/となっていますが、エラーが出る場合があります。そのときは、フルパスで入力してください。tmpフォルダがない場合は作成してください。
例) /home/sites/lolipop.jp/users/lolipop.jp-dp*****/web/tmp/
・Length・・・セキュリティーコードの桁数(デフォルト6)
・Max Temp Files・・・セキュリティーコードのパターンの数(デフォルト50)
・Action・・・セキュリティコード認証エラーアクション
「Reject Comment」にチェックします
次にセキュリティーコードを設置したいブログの設定画面から「設定」→「プラグイン」で「SCode」の「設定を表示」をクリックし、「Enable:・・・」の欄にチェックを入れ「変更保存」。
4.セキュリティーコードの設置
・個別エントリーアーカイブのテンプレートの編集
「テンプレート」→「アーカイブ」→「個別エントリーアーカイブ」のテンプレートに下記を追加します。
<p><label for="scode">セキュリティコード:</label><br />
<input type="hidden" id="code" name="code" value="<$MTSecurityCode$>" />
<img class="scode" src="<$MTCGIPath$><$MTSecurityImage$>?code=<$MTSecurityCode$>">
<input id="scode" tabindex="3" type="text" id="scode" name="scode" /></p>
コメント部分は通常用とTypeKey用の2ヶ所あります、用途に合わせ追加してください。
セキュリティーコードの位置を変更しない場合は「class="scode"」「id="scode"」は削除してください。
「tabindex」は、タブ移動の順序になります。追加する場所に合わせ数値を変更してください。(使用しない場合は、削除してください)
・テンプレートモジュールの作成
コメントプレビュー・保留・エラーのテンプレートにもセキュリティーコードを設置するための準備をします。
「テンプレート」→「モジュール」で「モジュールを新規作成」をクリック。
「テンプレート名」・・・・CommentFields for SCode (個々に名前をつけてください)
「モジュールの内容」に個別エントリーアーカイブのテンプレートの<MTEntryIfCommentsOpen> ~ </MTEntryIfCommentsOpen>の間をコピーし貼り付け、最後にjavascriptを追加し「保存」します。
<MTEntryIfCommentsOpen>
・・・・・・・・・・・ 中 略 ・・・・・・・・・・・・・・
<script type="text/javascript" language="javascript">
<!--
if (document.comments_form.email != undefined)
document.comments_form.email.value = getCookie("mtcmtmail");
if (document.comments_form.author != undefined)
document.comments_form.author.value = getCookie("mtcmtauth");
if (document.comments_form.url != undefined)
document.comments_form.url.value = getCookie("mtcmthome");
if (getCookie("mtcmtauth") || getCookie("mtcmthome")) {
document.comments_form.bakecookie[0].checked = true;
} else {
document.comments_form.bakecookie[1].checked = true;
}
if (document.comments_form.author)
document.comments_form.author.value =
'<$MTCommentPreviewAuthor encode_js="1"$>';
if (document.comments_form.email)
document.comments_form.email.value =
'<$MTCommentPreviewEmail encode_js="1"$>';
if (document.comments_form.url)
document.comments_form.url.value =
'<$MTCommentPreviewURL encode_js="1"$>';
if (document.comments_form.text)
document.comments_form.text.value =
'<$MTCommentPreviewBody convert_breaks="0" encode_js="1"$>';
//-->
</script>
</MTEntryIfCommentsOpen>
・コメントプレビュー・保留・エラーのテンプレートの編集
コメント・プレビュー・保留・エラーのテンプレートの<MTCommentFields preview="1" static="1">の部分を<MTInclude module="CommentFields for SCode">に差し替えます。
「CommentFields for SCode」は、先程モジュールでつけた名前が入ります。
<MTIfCommentsAllowed>
<MTInclude module="CommentFields for SCode">
</MTIfCommentsAllowed>
・セキュリティーコードの位置とサイズ
a. スタイルシートでセキュリティーコードの位置を整えます。
「テンプレート」→「インデックス」→「スタイルシート」に下記を追加します。
.scode {
vertical-align: top;
}
#scode {
margin: 0px 0px 0px 5px;
}
b. セキュリティーコードのサイズを変更
「plugins」→「SCode」→「lib」→「SCode.pm」の34行目から57行目を下記のように編集します。
my $im = new GD::Image($im_length,2518);
# define the color we going to use
my $c_background = $im->colorAllocate(224,224,224);
my $c_border = $im->colorAllocate(0,0,0);
my $c_line = $im->colorAllocate(192,192,192);
my $c_code = $im->colorAllocate(128,128,128);
# Fill in the background
$im->fill(50,50,$c_background);
# Draw the borders lines
for (my $i=0;$i<$im_length;$i+=5) {
$im->line($i,0,$i,2417,$c_line);
}
for (my $i=0;$i<25;$i+=5) {
$im->line(0,$i,$im_length-1,$i,$c_line);
}
$im->rectangle(0,0,$im_length-1,2417,$c_border);
# Write the code
$im->string(gdGiantFont,8,51,$scode,$c_code);
編集後、上書き保存して上書きアップロードしてください。以上で終了です。
※セキュリティーコードを導入したので、コメントプレビュー・保留・エラーのメッセージを変更したほうが良いかと思います。
参照先:
小粋空間さん「SCode プラグインでコメントスパムを制限する(その1:基本設定)」
hiroto sakai's blogさん「MT 3.2 で Scode プラグイン」
ご意見・ご感想 (8)
こんにちは。はじめまして。
SCode早速導入させて頂きました。とても参考になりました。またよろしくお願い致します。
Posted by : mana | 2006年08月20日 20:55
Comment Time / August 20, 2006
Mizkyさん、コメントありがとうございます。
返答遅れ申し訳ありませんでした。
今後ともヨロシクお願いします^^
Posted by : magnet | 2006年06月09日 22:26
Comment Time / June 9, 2006
はじめましてmagnetさん。
プラグイン導入、参考にさせて頂きました。
ありがとうございました^^
Posted by : Mizky | 2006年05月27日 06:46
Comment Time / May 27, 2006
こんにちは^^ bizbellさん。
エラーメッセージが表示されない件について、取り急ぎコメントしますね。
わたしも設置したときではないのですが、同じ現象がコメントの送信と確認ボタンを画像に変更したときにおこりました。通常のボタンに変更すると問題なく動作しましたよ。試してみてください^^
Posted by : magnet | 2006年05月08日 07:49
Comment Time / May 8, 2006
度々すいません。bzbell です。
重複トラバしてしまいました(汗ごめんなさい。
1つ確認したいことがあります。
コメント投稿時に未記入のまま投稿すると、当然エラーメッセージが表示されるはずですが、わたしのブログでは表示されなくなってしまったんです。
何事も無かったような振る舞いをするんです。
かといって、投稿はされてなくて正しく弾いてくれてるみたいなんです。
magnetさんのところでは、この現象出ますか?
Posted by : bzbell | 2006年05月08日 04:36
Comment Time / May 8, 2006
おはよございます^^
GWボケで寝れなくなってしまいました^^;
この記事もっと早く出して欲しかったです…なんてね(汗
実はmagnetさんのセキュリティコードを見て、小粋空間さんのとこで記事にしてたのを思い出して(ずっと忘れてました)、最近わたしも設置したんですよ。
magnetさんはすんなり設置できたようですね。
わたしは…Temp Directory のところでつまづきました。
では、では…トラバさせていただきました♪
Posted by : bzbell | 2006年05月08日 04:27
Comment Time / May 8, 2006
こんにちは^^ mituruさん
コメントありがとうございます。
いろいろ情報交換していきましょう^^
こちらこそヨロシクお願いします。
Posted by : magnet | 2006年05月07日 01:21
Comment Time / May 7, 2006
始めまして管理人さん
プラグインを導入するにあたって参考に、させて頂きました。
ありがとうございました
これからも宜しくお願いします。
Posted by : mituru | 2006年05月07日 01:03
Comment Time / May 7, 2006