#!/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; } } } } ##########################