SEO対策サプリTOPへ >  インターネット関連情報 >  「Xserver」で「Chaptcha」導入メモ コメントスパム対策

「Xserver」で「Chaptcha」導入メモ コメントスパム対策

Xserverを使用していますが、MTのコメントスパムに
悩まされせっかくいただいたコメントが埋もれてしまって
いました。

そこで、「Captcha Plugin - Ogawa::Memoranda」の導入を考えたのですが、
Perlモジュールの 「Authen::Captcha」 がXserverでは
入っていません・・・。

Xserverに追加願いを出しましたが、考慮の余地なく
却下!

ということであきらめていたのですが、どうにも我慢できなくなり
なんとかしようと探し回ったら方法を発見しました。

・・・ということで無理矢理導入した導入メモです。

コメント欄を見ていただければ分かりますが、簡単なコードを表示し、コメント時にそのコードを入力してもらうものです。これで、spambotによるコメントを排除できると期待しています。 実践!戦略的IT経営: コメントスパム対策


さて、最大の課題はPerlモジュール Authen::Captcha を動かすことだと思います。 ロリポでは導入されてないのです。リクエストが多ければ入れるという話はあるようですが。
ロリポップでCaptcha plugin導入 (nni's blog)

(2007.05.02 ロリポでは、「Authen::Captcha」が追加されました。)


下記では、
ロリポップでCaptcha plugin導入 (nni's blog)
の記事を引用しながら補足メモを入れています。

Joshua I. Miller / Authen-Captcha - search.cpan.org
から、 Authen-Captcha-1.023をダウンロード。

●解凍して、MTを入れているディレクトリの「extlib/Authen」にアップロード


●「wwwtest.cgi」を書き換えてテスト


#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use lib '/home/設置したディレクトリ/mt/extlib';
use Authen::Captcha;

my $output_dir = "/home/どこかにディレクトリを作成/captcha";
my $www_output_dir = "/captcha";
my $db_dir = "/home/どこかにディレクトリを作成/captchadb";

「wwwtest.cgi」「captcha」「captchadb」とも「755」で、
動きました。


http://「wwwtest.cgiを設置したディレクトリ」/wwwtest.cgi
にブラウザからアクセスしてテスト。

キャプチャが無事表示されればOK。


Captcha Plugin - Ogawa::Memorandaをダウンロード

●「captcha_js.cgi」に追記

#!/usr/bin/perl
#
# $Id: captcha_js.cgi 264 2006-10-07 16:23:10Z ogawa $
#

use lib '/home/設置したディレクトリ/mt/extlib';
use Authen::Captcha;
use File::Spec;
use File::Basename;
use CGI;


●パーミッション

cgi、plの拡張子ファイルを755でいけました。


プラグインを有効にする

設定で Enable Captcha にチェックがついているか確認します。  (最初はついてるのかな? 私はがちゃがちゃやってたのでついてませんでした)


これ結構大切です。
私もついていませんでした。

MTの管理画面から該当ブログの

サイドメニュー-設定-プラグインタブ

「Enable Captcha:」のチェックを入れましょう。


●確認

 一応稼動確認として、cgiに直アクセスしてみてエラーにならないか確認します。  http://www.nnistar.com/cgi/mt/plugins/captcha/captcha_js.cgi  IEだと「ファイルのダウンロード」になると思います。  中身は document.writeln とかが並んでいます。


●テンプレート設定

<script type="text/javascript" src="<$MTCaptchaJsURL$>"></script>

この一行を足すわけですが、私もなぜか表示されなかったので

print $q->header('text/javascript'); # print "if (!commenter_name) {\n"; print "\tdocument.writeln('$_');\n" foreach split(/\r?\n/, $tmpl); # print "}\n";

にしてみたら無事動きました!!


補足&指摘お待ちしております。

2007年06月24日
Hatenaブックマークに追加はてなに追加 del.icio.usに追加del.icio.usに追加 livedoorクリップへ追加livedoorクリップへ追加 アイ・ビーに追加アイ・ビーに追加

関連エントリー

トラックバック

このエントリーのトラックバックURL(言及リンクを含まない場合はエラーが返ります。):
http://www.hon-seo.com/mt3.3/mt-tb.cgi/136

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)