sub login_check { my %in; my $url=""; my $LOGIN_PASSWORD=""; ($url,$in{'login'},$in{'pswd'},$LOGIN_PASSWORD)=@_; my $LOGOUT_TIME="3600"; my $ck_data; *ck_data=&get_cookie(); my $t=time; my $buf; if ($in{'login'} eq 'login') { if ($in{'pswd'} eq $LOGIN_PASSWORD) { $ck_data{"sid"}=$t; &jump_url($t); } else { &prt_login('パスワードが違います',$url); } } elsif ($in{'login'} eq 'logout') { &jump_url(''); } my $chk_time=$t-$ck_data{"sid"}; if ($ck_data{"sid"} eq '') { &prt_log_check($url); } elsif ($chk_time>$LOGOUT_TIME) { &prt_login('セッションタイムエラー',$url); } my $new_login=$t; $new_login="Set-cookie: sid=$t;\n"; return $buf; } sub get_ck2 { local (*ck_data,@cookie); open (FF,"$_DIR{'sid_data'}"); while () { s/\r//g; s/\n//g; next if ($_ eq ''); my ($k,$v)=split("=",$_,2); $ck_data{$k}=$v; } close(FF); return *ck_data; } sub jump_url2 { open (FF,">$_DIR{'sid_data'}"); while (my ($k,$v)=each %ck_data) { print FF $k."=".$v."\n"; } close(FF); return ""; } sub jump_url2a { open (FF,">./data/sid.dat"); close(FF); } sub login_check2 { my %in; my $url=""; my $LOGIN_PASSWORD=""; #パスワード ($url,$in{'login'},$in{'pswd'},$LOGIN_PASSWORD)=@_; my $LOGOUT_TIME="3600"; my $ck_data; *ck_data=&get_ck2(); my $t=time; my $buf; if ($in{'login'} eq 'login') { if ($in{'pswd'} eq $LOGIN_PASSWORD) { $ck_data{"sid"}=$t; &jump_url2($t); return ""; } else { &prt_login('パスワードが違います',$url); } } elsif ($in{'login'} eq 'logout') { &jump_url2a(''); &prt_login('ログアウトしました',$url); } my $chk_time=$t-$ck_data{"sid"}; if ($ck_data{"sid"} eq '') { &prt_log_check($url); } elsif ($chk_time>$LOGOUT_TIME) { &jump_url2a(''); &prt_login('セッションタイムエラー',$url); } my $new_login=$t; $new_login="Set-cookie: sid=$t;\n"; return $buf; } sub prt_log_check { my ($url)=@_; $html{'err_msg'}=$msg; &template_view($_TPL{'admin_login'},$html); exit; } # # ログイン画面2 # sub prt_login { my ($msg,$url)=@_; my $buf=""; $html{'err_msg'}=$msg; &template_view($_TPL{'admin_login'},$html); exit; } sub jump_url { my ($ck)=@_; print "Content-type:text/html\n\n"; print < redirect... EOF exit; } #--------------------------------------------------------------------- sub get_cookie { local ($cookie) = $ENV{'HTTP_COOKIE'}; local (*ck_data,@cookie); @cookie = split(/ /,$cookie); foreach (@cookie) { local ($name,$value) =split(/=/); $value=~s/\;//gi; $ck_data{$name}=$value; } return *ck_data; } sub Readform { my ($method_type,$back_url,$maxdata)=@_; my $data; my $name,$value; my %in; my $meth=$ENV{'REQUEST_METHOD'}; if (($meth eq 'POST') || ($meth eq 'post')) { if (($method_type eq 'POST') || ($method_type eq '')) { read( STDIN, $data, $ENV{'CONTENT_LENGTH'} ); seek STDIN,0,0; } } elsif (($meth eq 'GET') || ($meth eq 'get')) { if (($method_type eq 'GET') || ($method_type eq '')) { $data=$ENV{'QUERY_STRING'}; } } return if ($data eq ''); my $src_data=$data; $data =~ tr/+/ /; foreach (split('&',$data)) { ($name,$value)=split("="); $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1) )/ge; if ($in{$name} ne '') { $in{$name}.="\0".$value;} else {$in{$name}=$value;} } return $in{'login'},$in{'pswd'},$data; } 1;