アクセス禁止機能の実装
[1] ルーチン設定
まずは&decodeの下に「アクセス禁止リストを読み込む」ルーチンと「アクセス禁止処理」ルーチンを追加します。
ソース:ノーマル罵声 76行目
&decode;
&openkinshi; ←「アクセス禁止リストを読み込む」ルーチン実行
&kinshi; ←「アクセス禁止処理」ルーチン実行
&mozisu;
[2] decodeの編集
今回はIDにてアク禁を設定するので、decode内で作成した$idを$id2に保存するように変更をします。
ソース:ノーマル罵声 129行目
#if ($form{'id'} eq 'on'){
$ip=$ENV{'REMOTE_ADDR'};
($ip1,$ip2,$ip3)=split(/\./,$ip);
$ip=sprintf("%lx%lx%lx",$ip1,$ip3,$ip2);
$ip=$ip.$ENV{'REMOTE_USER'};
$ip=$ip.$ENV{'HTTP_USER_AGENT'};
@aline=unpack('C*',$ip);
foreach $ans(@aline){$zu=$zu+1;$seed=$seed+$ans*$zu;}
srand($seed);
for($i=0;$i<5;$i++){
$a=int(rand(16));
$a=sprintf("%lx",$a);
$id=$id.$a;
}
$id=$id2; ←$id2に_や[]の無いIDを保管
$id="_$id";
#}
[3] ルーチンの実装
下記ルーチンを適当な場所に追加して下さい。
#アクセス禁止リスト読み込み
sub openkinshi{
open(IN,"kinshi.dat");
@kinshiline=;
close(IN);
}
#アクセス禁止処理
sub kinshi{
foreach $ans(@kinshiline){
chomp $ans;
($kinshiid,$level)=split(/<@@>/,$ans);
if ($kinshiid eq $id2){
&atama;
print "閉鎖しました。ご愛顧ありがとうございました。";
&ketu;
exit;
}
}
}
[4] アク禁リストのアップロード
アクセス禁止リスト「kinshi.dat」ファイルを作成し、cgiと同じ場所にアップロードして下さい。アクセス禁止リストの書式は以下の通りです。アクセス禁止レベルを付けてありますが、現状は使用しておりません。僕はアクセス禁止レベルによって結果を変えてあります。例えばこのレベルなら好きな名前を付けられないとか。また、0は何もしないにしておいて悪質なID(例:Google先生)の覚書にしています。
ファイル名:kinshi.dat
内容:
a0606<@@>1<@@>
472db<@@>1<@@>