#!/usr/bin/perl
#上記は、サ−バ−のパスにあわせる。
#####################################################################
#Pwd CGI Ver1.0
#Copyright (c) 1996/1997 K.Yamano
#CGIの販売、転載、配布厳禁。
########################### 初期設定 #################################
#パスワード認証時に利用するパスワードを記入して下さい。只今、abcに設定中
#パスワードは、8字以内にして下さい。
$p = 'jsmsregr';
#パスワード認証後にジャンプ先のURLを記入(ジャンプ先ファイル名は、xxx.cgiでもOK)
$http = 'snkaitei_2007.htm';
#pwd.cgiまでのURLを記入
#$url = 'http://www2.jsms.or.jp/~cgi-bin/pwd/pwd.cgi';
$url = 'pwdSN.cgi';
#パスワード認証ウィンドウのキャンセルボタンを押した時のジャンプ先のURLを記入
#例えば、pwd.cgiのリンクが張られているページのURLを記入すればキャンセルボタンを押せばバックします。
#$url2 = 'http://www2.jsms.or.jp/index.html';
$url2 = '/bumon/bumon.htm';
#クッキーを利用する時はon、利用しない時は、off と記入。只今、onに設定中
$cooki = 'off';
#設置方法
#pwd.cgi.txtをpwd.cgiに変更。
#pwd.cgi のパーミッションを755に変更
#あなたのHPのどこかに、http://www.xxx.or.jp/~xxx/xxx/pwd.cgi のURLに
#リンクを張る、これをクリックすればパスワード認証ウィンドウがでます。
#サーバーによってはディレクトリーを見られる場合があるのでこの場合は
#index.htmlがあるホームディレクトリー内に上記ジャンプ先のファイル($http)を置いたほうが安全。
#####################################################################
&dec;
if($FORM{'p'} eq $p){
&time;
print "Location:$http\n";
&SetCookie;
print "\n";
}elsif($FORM{'p'} ne "" && $FORM{'p'} ne $p){
$re = 'パスワードが違います。再入力して下さい。(半角英数字8字以内を入力)';
&pwd;
}else{
if($cooki eq 'on'){&cookieBoard;}
$re = 'パスワードを入力して下さい。(半角英数字8字以内を入力)';
&pwd;
}
sub pwd {
print "Content-type: text/html\n\n";
print <
Pwd
HTML
}
sub dec {
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#&jcode'convert(*value,'sjis');
$FORM{$name} = $value;
}
}
################
#時間設定のサブル−チン
sub time {
# 最終書込みから下記の設定後にクッキ−が削除されます
#記入欄は下記のlocaltime(time + 30*24*60*60) 内に記述して下さい。
# 現在は10日後に設定しています。
# 30日後 30*24*60*60
#10日後 10*24*60*60
#1日後 24*60*60
# 12時間後 12*60*60
$ENV{'TZ'} = "GMT";
( $secm,$minm,$hourm,$daym,$monm,$yearm,$wdaym ) = localtime(time + 30*24*60*60);
if ($yearm < 10) { $yearm = "0$yearm";}
if ($secm < 10) { $secm = "0$secm";}
if ($minm < 10) { $minm = "0$minm";}
if ($hourm < 10) { $hourm = "0$hourm";}
if ($daym < 10) { $daym = "0$daym";}
#$mon++;
$day = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdaym];
$month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$monm];
$yearm = 1900 + $yearm;
}
# SetCookieヘッダを出力するサブルーチン
sub SetCookie {
#項目設定:
# "キ−ワ−ド=値 \^キ−ワ−ド,値 \^キ−ワ−ド,値; ";
#上記のように記入する。記入例は下記をご覧ください。
print "Set-Cookie: ";
print "PWD_P=$FORM{'p'} \^; ";
print "expires=$day, $daym-$month-$yearm $hourm:$minm:$secm GMT\n";
}
#デコ−ドサブル−チン
sub cookieBoard {
local($key,$value);
foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
foreach (split(/ \^/)){
$_ =~ s/\,/=/g;
($key, $value) = split(/=/);
if ($key ne "") {
$cook{$key} = $value;
}
}
}
}
##########################