YomiSearch/SpamRegistCheck.pm の8行目〜が設定項目になっています。
my $LIMIT_TIME=3600;
新規登録画面を開いた時から登録が完了するまでの有効時間(秒)を設定します。この時間を超えるとタイムアウトとなり登録者は新規登録画面から登録し直す必要があります。
my $LIMIT_SAME_IP=2;
$LIMIT_TIMEで設定した時間内に同一IPによっていくつまでの登録を許可するかを設定します
my $MD5_LIB_PATH="YomiSearch/md5_mini.pl";
md5_mini.plのパスを設定します。通常は修正する必要はありません
my $USE_Digest_MD5=0;
Digest::MD5モジュールを使用する場合には 1 にしてください。Digest::MD5がインストールされているサーバでは使用したほうが処理が速くなります。
新規に追加されるファイルは
YomiSearch/SpamRegistCheck.pm
YomiSearch/md5_mini.pl
YomiSearch/index.html
log/SpamRegistCheck.cgi
修正が必要なファイルは
regist_ys.cgi
template/regist_new.html
template/regist_new_preview.html
です。
修正箇所は<!-- add SpamRegistCheck --> 〜 <!-- /add SpamRegistCheck -->
又は、#<!-- add SpamRegistCheck --> 〜 #<!-- /add SpamRegistCheck -->
で囲まれています。
[regist_ys.cgi](5箇所修正)
★1: 1380行目付近 mes関数内のフォーム入力値に
<!-- add SpamRegistCheck -->
<input type=hidden name=spam_chk_code value="$FORM{spam_chk_code}">
<input type=hidden name=spam_chk_time value="$FORM{spam_chk_time}">
<!-- /add SpamRegistCheck -->
を追加。
★2: 762行目付近の
@hyouji_log=@Slog;
と
if($EST{user_check} && $FORM{changer} ne "admin" && $FORM{mode} eq "act_regist"){ #<仮登録時>
の間に
#<!-- add SpamRegistCheck -->
if($FORM{'changer'} ne "admin"){
#登録成功時に連続登録のチェック用データファイルにデータを追加しファイルを更新
#戻り値:更新成功=OK/更新失敗="エラーメッセージ")
$result=$SpamRegistCheck_obj->add_file(time=>$FORM{spam_chk_time},check_code=>$FORM{spam_chk_code});
}
#<!-- /add SpamRegistCheck -->
を追加。
★3: 751行目付近 ✓ 〜 &lock; の間に
#<!-- add SpamRegistCheck -->
my ($SpamRegistCheck_obj,$result);
if($FORM{'changer'} ne "admin"){
#スパム登録チェックのオブジェクトの作成
$SpamRegistCheck_obj=YomiSearch::SpamRegistCheck->new(logfile=>"$EST{log_path}SpamRegistCheck.cgi");
#time値と認証用文字列との妥当性をチェック
#戻り値:認証成功=OK/認証失敗=NG/有効時間を超えている=TIMEOUT
my $result=$SpamRegistCheck_obj->check(salt=>substr($EST{pass},-2),
time=>$FORM{spam_chk_time},check_code=>$FORM{spam_chk_code});
if($result eq "NG"){&mes("データの照合に失敗しました。新規登録画面から登録をやり直してください。","データ照合エラー","regist_ys.cgi?mode=new");}
elsif($result eq "TIMEOUT"){&mes("登録画面の有効期限切れです。新規登録画面から登録をやり直してください。","データ照合エラー","regist_ys.cgi?mode=new");}
#同一IPからの連続登録チェック
#戻り値:許容重複数を(超えていない=OK/超えている=NG/ログファイルの読み込みエラー=FILE_READ_ERROR)
$result=$SpamRegistCheck_obj->ip_check(check_code=>$FORM{spam_chk_code});
if($result eq "NG"){&mes("一定時間内の同一IPによる登録数の制限を越えました。しばらくしてから登録をやり直してください。","登録数の制限エラー","regist_ys.cgi?mode=new");}
elsif($result eq "FILE_READ_ERROR"){&mes("$SpamRegistCheck_obj->{logfile}の読み込みに失敗しました。","ファイルの読み込みエラー","regist_ys.cgi?mode=new");}
}
#<!-- /add SpamRegistCheck -->
を追加。
★4: 165行目付近の
else{
と
print "Content-type: text/html\n\n";
require "$EST{temp_path}regist_new.html";
の間に
#<!-- add SpamRegistCheck -->
#スパム登録チェックのオブジェクトの作成
my $SpamRegistCheck_obj=YomiSearch::SpamRegistCheck->new(logfile=>"$EST{log_path}SpamRegistCheck.cgi");
if($FORM{spam_chk_time} && $FORM{spam_chk_code}){ #time値とハッシュ値の照合を行う
#time値と認証用文字列との妥当性をチェック
#戻り値:認証成功=OK/認証失敗=NG/有効時間を超えている=TIMEOUT
my $result=$SpamRegistCheck_obj->check(salt=>substr($EST{pass},-2),
time=>$FORM{spam_chk_time},check_code=>$FORM{spam_chk_code});
if($result eq "NG"){&mes("データの照合に失敗しました。新規登録画面から登録をやり直してください。","データ照合エラー","regist_ys.cgi?mode=new");}
elsif($result eq "TIMEOUT"){&mes("登録画面の有効期限切れです。新規登録画面から登録をやり直してください。","データ照合エラー","regist_ys.cgi?mode=new");}
}
else{ #mode,ktフィールド以外は無効にする
%FORM=(mode=>$FORM{mode},kt=>$FORM{kt});
#認証用文字列を生成
$FORM{spam_chk_time}=time();
$FORM{spam_chk_code}=$SpamRegistCheck_obj->make_check_code(salt=>substr($EST{pass},-2),time=>$FORM{spam_chk_time});
}
#<!-- /add SpamRegistCheck -->
を追加。
★5: ファイルの先頭 8行目付近に
#<!-- add SpamRegistCheck -->
require YomiSearch::SpamRegistCheck;
#<!-- /add SpamRegistCheck -->
を追加。
[template/regist_new_preview.html](2箇所修正)
★1: <form>〜</form>内(登録実行用) 57行目付近に
<!-- add SpamRegistCheck -->
<input type=hidden name=spam_chk_code value="$FORM{spam_chk_code}">
<input type=hidden name=spam_chk_time value="$FORM{spam_chk_time}">
<!-- /add SpamRegistCheck -->
を追加。
★2: <form>〜</form>内(登録画面へのバック用) 32行目付近に
<!-- add SpamRegistCheck -->
<input type=hidden name=spam_chk_code value="$FORM{spam_chk_code}">
<input type=hidden name=spam_chk_time value="$FORM{spam_chk_time}">
<!-- /add SpamRegistCheck -->
を追加。