DoboWiki
Top
> 自由区/スパム対策/Yomi-SearchにCaptchaを付ける をテンプレートにして作成
自由区/スパム対策/Yomi-SearchにCaptchaを付ける をテンプレートにして作成
開始行:
'''現在執筆中です。'''
*Yomi-SearchにCaptchaを付ける [#a1f06d33]
ここでは[[Yomi-Search(ヨミサーチ)>http://yomi.pekori.to...
**Authen::Captchaのインストール [#fd4edb19]
ここでは、[[Authen::Captcha>http://search.cpan.org/search...
ご利用のサーバーにAuthen::Captchaがすでにインストールされ...
もしインストールされていないのであれば、インストールしま...
管理人からインストールを拒否された場合は、自分でインスト...
自分でインストールすることもできない場合は、次のような方...
+Yomi-Searchがインストールされているディレクトリ("regist...
+「[[Authen::Captcha>http://search.cpan.org/search?dist=A...
+展開してできたファイル"Captcha.pm"とフォルダ"Captcha"丸...
+以上。
**ディレクトリの作成 [#b2080902]
ここからが本番です。まず、データを保存するディレクトリと...
"$captcha->data_folder"に作成されるファイルには外部から見...
**"regist_ys.cgi"の改造 [#fede1f1f]
次に、Yomi-Searchを改造します。Yomi-Searchのバージョンは...
まず、"regist_ys.cgi"をテキストエディタで開いて、その最後...
#code(perl){{
sub create_captcha_object {
use Authen::Captcha;
# create a new object
my $captcha = Authen::Captcha->new();
# set the data_folder. contains flatfile db to maintain ...
$captcha->data_folder('./data');
# set directory to hold publicly accessable images
$captcha->output_folder('./images');
#$captcha->width(25);
#$captcha->height(35);
#$captcha->expire(300);
return $captcha;
}
sub generate_captcha {
$captcha = &create_captcha_object;
# create a captcha. Image filename is "$md5sum.png"
my $md5sum = $captcha->generate_code(4);
return $md5sum;
}
sub check_captcha {
if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "adm...
$FORM{'preview'} eq "on") {
return;
}
$captcha = &create_captcha_object;
# check for a valid submitted captcha
# $code is the submitted letter combination guess from...
# $md5sum is the submitted md5sum from the user (that ...
my $results = $captcha->check_code($FORM{captcha},$FORM{...
# $results will be one of:
# 1 : Passed
# 0 : Code not checked (file error)
# -1 : Failed: code expired
# -2 : Failed: invalid code (not in database)
# -3 : Failed: invalid code (code does not match...
if($results == -3){
&mes("<b>認証コード</b>が正しくありません","認証エラー"...
} elsif ($results == -1){
&mes("<b>認証コード</b>の有効期限が切れました","認証エ...
} elsif ($results != 1){
&mes("<b>認証コード</b>のチェックに失敗しました","認証...
}
}
sub get_captcha_html {
if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "adm...
return '';
}
my $md5sum = &generate_captcha;
if (!$_[0]) {
return<<"<!--HTML-->";
<br><li>【認証コード】
<ul>※下の画像に表\示されている文字(アルファベットと数...
を入力してください。<br>
※プレビューする場合は、プレビュー画面で認証コードを入力...
ここで入力する必要はありません。<br>
※何らかの理由により画像を読むことができない場合は、その...
管理人までご連絡ください。<br>
<img src="captcha/img/$md5sum.png" alt="認証コード"><br>
<input type=text name=captcha value="$FORM{captcha}" si...
<input type=hidden name=captchamd5 value="$md5sum">
</ul><br>
<!--HTML-->
} else {
return<<"<!--HTML-->";
<br><li>【認証コード】
<ul>※下の画像に表\示されている文字(アルファベットと数...
を入力してください。<br>
※何らかの理由により画像を読むことができない場合は、その...
管理人までご連絡ください。<br>
<img src="captcha/img/$md5sum.png" alt="認証コード"><br>
<input type=text name=captcha value="$FORM{captcha}" si...
<input type=hidden name=captchamd5 value="$md5sum">
</ul><br>
<!--HTML-->
}
}
}}
次に、749行目あたりにある
#code(perl){{
✓ #入力内容のチェック
}}
と
#code(perl){{
&lock; #ロック
}}
の間に、次のようなコードを挿入します。
#code(perl){{
&check_captcha;
}}
**設定の変更 [#t22ab37c]
上記のコードのうち、設定に関係のある部分を説明します。
create_captcha_objectの"$captcha->data_folder"にデータを...
"$captcha->width"と"$captcha->height"には、一文字あたりの...
"$captcha->expire"には、Captchaの有効期間を秒単位で指定し...
generate_captchaでは、"$captcha->generate_code"で画像を作...
"get_captcha_html"は、「新規ホームページ登録」ページに表...
"get_captcha_html"で行っていることはテンプレートファイル...
**テンプレートの改造 [#ia1480c8]
次にテンプレートを編集します。編集するテンプレートは、"re...
まず"regist_new.html"をテキストエディタで開いて、180行目...
#code(perl){{
<!--HTML-->
}
}}
の後ろに次のようなコードを挿入します。
#code(perl){{
my $captcha_html = &get_captcha_html(0);
}}
そしてその直後の
#code(perl){{
print<<"<!--HTML-->";
}}
の後ろに
#code(perl){{
$captcha_html
}}
を挿入します。
"regist_new_preview.html"の場合も同様です。161行目あたりの
#code(perl){{
<!--HTML-->
}
}}
の後ろに次のようなコードを挿入します。
#code(perl){{
my $captcha_html = &get_captcha_html(1);
}}
そしてその直後の
#code(perl){{
print<<"<!--HTML-->";
}}
の後ろに
#code(perl){{
$captcha_html
}}
を挿入します。
これで、終了です。
//これより下は編集しないでください
#pageinfo([[:Category/インターネット]],2007-05-11 (金) 01...
終了行:
'''現在執筆中です。'''
*Yomi-SearchにCaptchaを付ける [#a1f06d33]
ここでは[[Yomi-Search(ヨミサーチ)>http://yomi.pekori.to...
**Authen::Captchaのインストール [#fd4edb19]
ここでは、[[Authen::Captcha>http://search.cpan.org/search...
ご利用のサーバーにAuthen::Captchaがすでにインストールされ...
もしインストールされていないのであれば、インストールしま...
管理人からインストールを拒否された場合は、自分でインスト...
自分でインストールすることもできない場合は、次のような方...
+Yomi-Searchがインストールされているディレクトリ("regist...
+「[[Authen::Captcha>http://search.cpan.org/search?dist=A...
+展開してできたファイル"Captcha.pm"とフォルダ"Captcha"丸...
+以上。
**ディレクトリの作成 [#b2080902]
ここからが本番です。まず、データを保存するディレクトリと...
"$captcha->data_folder"に作成されるファイルには外部から見...
**"regist_ys.cgi"の改造 [#fede1f1f]
次に、Yomi-Searchを改造します。Yomi-Searchのバージョンは...
まず、"regist_ys.cgi"をテキストエディタで開いて、その最後...
#code(perl){{
sub create_captcha_object {
use Authen::Captcha;
# create a new object
my $captcha = Authen::Captcha->new();
# set the data_folder. contains flatfile db to maintain ...
$captcha->data_folder('./data');
# set directory to hold publicly accessable images
$captcha->output_folder('./images');
#$captcha->width(25);
#$captcha->height(35);
#$captcha->expire(300);
return $captcha;
}
sub generate_captcha {
$captcha = &create_captcha_object;
# create a captcha. Image filename is "$md5sum.png"
my $md5sum = $captcha->generate_code(4);
return $md5sum;
}
sub check_captcha {
if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "adm...
$FORM{'preview'} eq "on") {
return;
}
$captcha = &create_captcha_object;
# check for a valid submitted captcha
# $code is the submitted letter combination guess from...
# $md5sum is the submitted md5sum from the user (that ...
my $results = $captcha->check_code($FORM{captcha},$FORM{...
# $results will be one of:
# 1 : Passed
# 0 : Code not checked (file error)
# -1 : Failed: code expired
# -2 : Failed: invalid code (not in database)
# -3 : Failed: invalid code (code does not match...
if($results == -3){
&mes("<b>認証コード</b>が正しくありません","認証エラー"...
} elsif ($results == -1){
&mes("<b>認証コード</b>の有効期限が切れました","認証エ...
} elsif ($results != 1){
&mes("<b>認証コード</b>のチェックに失敗しました","認証...
}
}
sub get_captcha_html {
if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "adm...
return '';
}
my $md5sum = &generate_captcha;
if (!$_[0]) {
return<<"<!--HTML-->";
<br><li>【認証コード】
<ul>※下の画像に表\示されている文字(アルファベットと数...
を入力してください。<br>
※プレビューする場合は、プレビュー画面で認証コードを入力...
ここで入力する必要はありません。<br>
※何らかの理由により画像を読むことができない場合は、その...
管理人までご連絡ください。<br>
<img src="captcha/img/$md5sum.png" alt="認証コード"><br>
<input type=text name=captcha value="$FORM{captcha}" si...
<input type=hidden name=captchamd5 value="$md5sum">
</ul><br>
<!--HTML-->
} else {
return<<"<!--HTML-->";
<br><li>【認証コード】
<ul>※下の画像に表\示されている文字(アルファベットと数...
を入力してください。<br>
※何らかの理由により画像を読むことができない場合は、その...
管理人までご連絡ください。<br>
<img src="captcha/img/$md5sum.png" alt="認証コード"><br>
<input type=text name=captcha value="$FORM{captcha}" si...
<input type=hidden name=captchamd5 value="$md5sum">
</ul><br>
<!--HTML-->
}
}
}}
次に、749行目あたりにある
#code(perl){{
✓ #入力内容のチェック
}}
と
#code(perl){{
&lock; #ロック
}}
の間に、次のようなコードを挿入します。
#code(perl){{
&check_captcha;
}}
**設定の変更 [#t22ab37c]
上記のコードのうち、設定に関係のある部分を説明します。
create_captcha_objectの"$captcha->data_folder"にデータを...
"$captcha->width"と"$captcha->height"には、一文字あたりの...
"$captcha->expire"には、Captchaの有効期間を秒単位で指定し...
generate_captchaでは、"$captcha->generate_code"で画像を作...
"get_captcha_html"は、「新規ホームページ登録」ページに表...
"get_captcha_html"で行っていることはテンプレートファイル...
**テンプレートの改造 [#ia1480c8]
次にテンプレートを編集します。編集するテンプレートは、"re...
まず"regist_new.html"をテキストエディタで開いて、180行目...
#code(perl){{
<!--HTML-->
}
}}
の後ろに次のようなコードを挿入します。
#code(perl){{
my $captcha_html = &get_captcha_html(0);
}}
そしてその直後の
#code(perl){{
print<<"<!--HTML-->";
}}
の後ろに
#code(perl){{
$captcha_html
}}
を挿入します。
"regist_new_preview.html"の場合も同様です。161行目あたりの
#code(perl){{
<!--HTML-->
}
}}
の後ろに次のようなコードを挿入します。
#code(perl){{
my $captcha_html = &get_captcha_html(1);
}}
そしてその直後の
#code(perl){{
print<<"<!--HTML-->";
}}
の後ろに
#code(perl){{
$captcha_html
}}
を挿入します。
これで、終了です。
//これより下は編集しないでください
#pageinfo([[:Category/インターネット]],2007-05-11 (金) 01...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]