会員制掲示板のPerlCGIスクリプトです。普通の掲示板にIP制限とパス制を組み合わせ改造しました。
✓で特定のIP(@allow)だったら認証画面(&admin)を出し、パスが合ったら掲示板を表示させる(&bbs)。
IPおよびパスが合わなければエラーを返す、・・・つもりでした。しかし下記のスクリプトでは認証画面は
表示しますが、パスを入力しても認証画面、パスミスでも認証画面になるという状態で、
どうにも煮詰まってしまいました。どこがおかしいのかご教授下さい。これでもIP制限は動作しています。
# アクセスチェック
✓
# registは投稿、adminが認証です。これいるのでしょうか(汗)
if ($mode eq 'regist'){ ®ist; }
if ($mode eq 'admin'){ &admin; }
# アクセス制限
sub check {
$host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'};
foreach $i (@allow) {
unless ($host =~ /$i/) {
&error("アクセスが許可されていません");
exit;
}else{
&header;
print << "_ID";
<form action="$script" method="POST"><input type=hidden name=mode value="admin"><input type=text name=pass size="8"><input type=submit value="認証"></form>
_ID
&footer;
exit;
}
}
}
#passcheck
sub admin {
if ($FORM{'pass'} ne "$pass") {&error("パスワードが違います");}
&bbs;
}