CAPTCHA Plugin - Ogawa::Memoranda より

Posted by
ぴろり
Posted at
2006/05/24 16:12
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ

 Ogawa::Memorandaogawa さんが、MovableType で使えるCAPTCHA プラグインを公開されています。こちらはセッション毎にテスト画像が変化するので、スパムボット弾きとしての効果は Tiny Gimpy よりも格段に上です。それに何より使う側である人間も安心できますし。
 コメントで少しやり取りをさせて頂いたのですが、テスト画像とテキストフィールドのデザインを変更したいと思った時に、多少なりに JavaScript の知識が必要となる点が気になります。可能であれば HTML が触れるくらいのスキルで、自由にデザインが変更できれば嬉しいかもしれません。

このエントリーをはてなブックマークに追加  

captcha_js.cgi の改造

 ogawa さんのオリジナルcaptcha_js.cgiを少し改造します。ソースコード後半部分にある <<EOD; から EOD の部分が変更されています。

    print $q->header('text/javascript');
    print <<EOD;
function captcha_E(id) { return document.getElementById (id); }
var captcha_e;
if (captcha_e = captcha_E ('captcha_image')) with (captcha_e) {
	src = '$url/images/$captcha_md5.png';
	width = $captcha_img_width;
	height = $captcha_img_height;
}
if (captcha_e = captcha_E ('captcha_md5')) with (captcha_e) {
	value = '$captcha_md5';
}
if (captcha_e = captcha_E ('captcha_code')) with (captcha_e) {
	size = $captcha_length;
	maxLength = $captcha_length;
}
EOD

コメント投稿フォームの改造

 コメント投稿フォームにも改造が必要です。今まで captcha_js.cgi が生成していた CAPTCHA テストの部品を自前で追加する必要があります。
 注意する点は、各フィールドに指定された id (captcha_imagecaptcha_codecaptcha_md5)を忘れずに振ってください。

<img id="captcha_image" src="dummy.gif" alt="CAPTCHA Image"/><br />

コメントを投稿する前に上の画像の文字を正しく入力してください:

<input id="captcha_code" name="captcha_code" type="text"/>
<input id="captcha_md5" name="captcha_md5" type="hidden"/>
<!-- ↑この部分は単なる HTML なので自由に編集できます -->

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

動作の概要

 機能面では何ら変更はありません。あと、デザイン修正が JavaScript 上で行える人には、今回の改造はあまり意味がありません(^^;
 改造前に、CAPTCHA 関係のフォーム生成を captcha_js.cgi に全て任せていたところを、先ずフォームの外枠だけを HTML で用意しておいて、最後に kbd>captcha_js.cgi が下準備をするようにしました。その分、幾つか ID 指定が必要になったりしたものの、"デザイン"と"機能"を分離する(なんて書くとカッコイイ)ことができたと思います。

このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。