#!/usr/bin/perl ############################# # This program foil Kumazawa # made in December, 2001. # AZIA ############################# #============# # 基本設定 # #============# # 文字コード変換ライブラリ取り込み require 'jcode.pl'; # タイトル名 $title = "公益財団法人テクノエイド協会 > 住宅改修事例"; # タイトル文字の色 $t_color = "#008080"; # タイトル文字のタイプ $t_face = "MS Pゴシック"; # タイトル文字サイズ(スタイルシートで有効) $t_point = '18pt'; # 本文文字サイズ(スタイルシートで有効) $b_point = '10pt'; # 記事題名の色 $sub_color = "#DD0000"; # スクリプト名 $script = './list.pl'; # ログファイル名 #$logfile = 'E:\Inetpub\wwwtais\jyutaku\list.log'; $logfile = './list.log'; # 戻り先 $home = "../index.shtml"; # method形式 (POST/GET) $method = 'GET'; # タグ許可 (0=no 1=yes) $tagkey = 0; # URLの自動リンク (0=no 1=yes) # --> タグ許可の場合は「0」とすること。 $autolink = 1; # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 0; # ロックファイル名 $lockfile = './lock/techno.lock'; # アクセス制限(ホスト名を記述) @deny = ( "" ); # 記事の更新は method=POST 限定 (0=no 1=yes) # (セキュリティ対策) $MethPost = 1; @dis_na = (" 全て"," 脳血管障害"," 脳梗塞"," 脳出血"," 脊髄小脳変性症"," パーキン\ソ\ン病"," 骨折"," 関節疾患"," 加齢"," 脊髄損傷"," 脳性麻痺"," その他"); @place_na = (" 全て"," 寝室・居室"," トイレ"," 脱衣・洗面所"," 浴室"," 廊下・階段"," 玄関"," 敷地内"," その他"); @move_na = (" 全て"," 自立"," 介助歩行"," 車いす自立"," 車いす介助"); @Num = ('1','2','3','4','5','6','7','8','9','10','11'); #============# # 設定完了 # #============# &decode; &axs_check; if ($in{'mode'} eq 'find') { &find; } elsif ($in{'mode'} eq 'check') { ✓ } &html; ###################### # アクセス制限 # ###################### sub axs_check { # ホスト名を取得 &get_host; local($flag)=0; foreach (@deny) { if (!$_) { next; } s/\*/\.\*/g; if ($host =~ /$_/i) { $flag=1; last; } } if ($flag) { &error("アクセスを許可されていません"); } } ###################### # 一覧記事表示処理 # ###################### sub html { &header; #&headlink; print <<"EOM";
■ 検索する目的のアイコンをクリックしてください。
疾患名 改修場所 移動
EOM if($in{'type'} == 1){ print <<"EOM";
■ 疾患名をクリックしてください。
●$dis_na[1] ●$dis_na[2] ●$dis_na[3] ●$dis_na[4]
●$dis_na[5] ●$dis_na[6] ●$dis_na[7] ●$dis_na[8]
●$dis_na[9] ●$dis_na[10] ●$dis_na[11]  
EOM } elsif($in{'type'} == 2){ print <<"EOM";
■ 改修場所をクリックしてください。
●$place_na[1] ●$place_na[2] ●$place_na[3] ●$place_na[4]
●$place_na[5] ●$place_na[6] ●$place_na[7] ●$place_na[8]
EOM } elsif($in{'type'} == 3){ print <<"EOM";
■ 移動\能\力をクリックしてください。
●$move_na[1] ●$move_na[2] ●$move_na[3] ●$move_na[4]
EOM } &footer; exit; } ###################### # ワード検索 # ###################### sub find { local(@pairs,$pair,$flag,@new,$count,$end_data,$page_end,$enwd, $seq1,$seq2,$seq3,$seq4,$seq5,$seq6,$seq7,$seq8,$seq9,$seq10,$seq11,$seq12,$seq13,$seq14,$next_line,$back_line); &header; #&headlink; print <<"EOM";
■ 検索する目的のアイコンをクリックしてください。
疾患名 改修場所 移動
EOM ############################### # ワード検索の実行と結果表示 # 検索 ############################### open(IN,"$logfile") || &error("Open Error : $logfile"); @lines = ; close(IN); @new=(); foreach (@lines) { $flag=0; ($seq1,$seq2,$seq3,$seq4,$seq5,$seq6,$seq7,$seq8,$seq9,$seq10,$seq11,$seq12,$seq13,$seq14) = split(/<>/); if($in{'type'} == 1){$tseq = $seq4;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[1]){$tseq = $seq6;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[2]){$tseq = $seq7;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[3]){$tseq = $seq8;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[4]){$tseq = $seq9;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[5]){$tseq = $seq10;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[6]){$tseq = $seq11;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[7]){$tseq = $seq12;} elsif($in{'type'} == 2 && $in{'dis'} eq $place_na[8]){$tseq = $seq13;} elsif($in{'type'} == 3){$tseq = $seq5;} $tseq_a = $seq4; $tseq_c = $seq5; if($in{'dis_b'} eq $place_na[1]){$tseq_b = $seq6;} elsif($in{'dis_b'} eq $place_na[2]){$tseq_b = $seq7;} elsif($in{'dis_b'} eq $place_na[3]){$tseq_b = $seq8;} elsif($in{'dis_b'} eq $place_na[4]){$tseq_b = $seq9;} elsif($in{'dis_b'} eq $place_na[5]){$tseq_b = $seq10;} elsif($in{'dis_b'} eq $place_na[6]){$tseq_b = $seq11;} elsif($in{'dis_b'} eq $place_na[7]){$tseq_b = $seq12;} elsif($in{'dis_b'} eq $place_na[8]){$tseq_b = $seq13;} foreach $aaa (@lines) { if ( $in{'dis_a'} eq "" && $in{'dis_b'} eq "" && $in{'dis_c'} eq "" ){ if ($tseq eq "$in{'dis'}") { $flag=1; last; } }elsif( $in{'dis_a'} eq "" && $in{'dis_b'} ne $place_na[0] && $in{'dis_c'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_b eq $in{'dis_b'} && $tseq_c eq $in{'dis_c'}) { $flag=1; last; } }elsif( $in{'dis_a'} eq "" && $in{'dis_b'} eq $place_na[0] && $in{'dis_c'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_c eq $in{'dis_c'}) { $flag=1; last; } }elsif( $in{'dis_a'} eq "" && $in{'dis_b'} ne $place_na[0] && $in{'dis_c'} eq $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_b eq $in{'dis_b'}) { $flag=1; last; } }elsif( $in{'dis_b'} eq "" && $in{'dis_a'} ne $place_na[0] && $in{'dis_c'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_a eq $in{'dis_a'} && $tseq_c eq $in{'dis_c'}) { $flag=1; last; } }elsif( $in{'dis_b'} eq "" && $in{'dis_a'} eq $place_na[0] && $in{'dis_c'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_c eq $in{'dis_c'}) { $flag=1; last; } }elsif( $in{'dis_b'} eq "" && $in{'dis_a'} ne $place_na[0] && $in{'dis_c'} eq $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_a eq $in{'dis_a'}) { $flag=1; last; } }elsif( $in{'dis_c'} eq "" && $in{'dis_a'} ne $place_na[0] && $in{'dis_b'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_a eq $in{'dis_a'} && $tseq_b eq $in{'dis_b'}) { $flag=1; last; } }elsif( $in{'dis_c'} eq "" && $in{'dis_a'} eq $place_na[0] && $in{'dis_b'} ne $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_b eq $in{'dis_b'}) { $flag=1; last; } }elsif( $in{'dis_c'} eq "" && $in{'dis_a'} ne $place_na[0] && $in{'dis_b'} eq $move_na[0]){ if ($tseq eq $in{'dis'} && $tseq_a eq $in{'dis_a'}) { $flag=1; last; } } } if ($flag) { push(@new,$_); } } ############################### # 検索終了 ############################### $count = @new; print <<"EOM";
該当件数:$count件
EOM if ($sen == 1 || $sen == 2) { print <<"EOM"; EOM } print <<"EOM"; EOM ################################## if($in{'type'} == 1){ print "\n"; } ################################## elsif($in{'type'} == 2){ print "\n"; } ################################## elsif($in{'type'} == 3){ print "\n"; } print <<"EOM";
EOM if($in{'type'} == 1){ foreach $i (@Num){ if($in{'dis'} eq $dis_na[$i]){ $stl[$i] = ""; $stl2[$i] = ""; } } print <<"EOM";
疾患名
$stl[1]●$dis_na[1]$stl2[1]
$stl[2]●$dis_na[2]$stl2[2]
$stl[3]●$dis_na[3]$stl2[3]
$stl[4]●$dis_na[4]$stl2[4]
$stl[5]●$dis_na[5]$stl2[5]
$stl[6]●$dis_na[6]$stl2[6]
$stl[7]●$dis_na[7]$stl2[7]
$stl[8]●$dis_na[8]$stl2[8]
$stl[9]●$dis_na[9]$stl2[9]
$stl[10]●$dis_na[10]$stl2[10]
$stl[11]●$dis_na[11]$stl2[11]
EOM if($count == 0){ print <<"EOM"; EOM }else{ ############################### # 結果を表示 ############################### if ($in{'page'} eq '') { $in{'page'} = 0; } $end_data = @new - 1; $page_end = $in{'page'} + $in{'view'} - 1; if ($page_end >= $end_data) { $page_end = $end_data; } $i = 1; foreach ($in{'page'} .. $page_end) { ($aseq1,$aseq2,$aseq3,$aseq4,$aseq5,$aseq6,$aseq7,$aseq8,$aseq9,$aseq10,$aseq11,$aseq12,$aseq13,$aseq14) = split(/<>/, $new[$_]); if($aseq6 ne ""){ $tseq6 = "[$aseq6 ]" ;}elsif($aseq6 eq ""){ $tseq6 = "" ;} if($aseq7 ne ""){ $tseq7 = "[$aseq7 ]" ;}elsif($aseq7 eq ""){ $tseq7 = "" ;} if($aseq8 ne ""){ $tseq8 = "[$aseq8 ]" ;}elsif($aseq8 eq ""){ $tseq8 = "" ;} if($aseq9 ne ""){ $tseq9 = "[$aseq9 ]" ;}elsif($aseq9 eq ""){ $tseq9 = "" ;} if($aseq10 ne ""){ $tseq10 = "[$aseq10 ]" ;}elsif($aseq10 eq ""){ $tseq10 = "" ;} if($aseq11 ne ""){ $tseq11 = "[$aseq11 ]" ;}elsif($aseq11 eq ""){ $tseq11 = "" ;} if($aseq12 ne ""){ $tseq12 = "[$aseq12 ]" ;}elsif($aseq12 eq ""){ $tseq12 = "" ;} if($aseq13 ne ""){ $tseq13 = "[$aseq13 ]" ;}elsif($aseq13 eq ""){ $tseq13 = "" ;} print <<"EOM"; EOM $i++; } close(IN); } #######カウント0の場合ここまで } elsif($in{'type'} == 2){ foreach $i (@Num){ if($in{'dis'} eq $place_na[$i]){ $stl[$i] = ""; $stl2[$i] = ""; } } print <<"EOM";
改修事例
指定された条件を満たす事例は登録されておりません。
■$aseq14
 疾患名$aseq4
 移動\能\力$aseq5
 改修場所 $tseq6$tseq7$tseq8$tseq9$tseq10$tseq11$tseq12$tseq13
改修場所
$stl[1]●$place_na[1]$stl2[1]
$stl[2]●$place_na[2]$stl2[2]
$stl[3]●$place_na[3]$stl2[3]
$stl[4]●$place_na[4]$stl2[4]
$stl[5]●$place_na[5]$stl2[5]
$stl[6]●$place_na[6]$stl2[6]
$stl[7]●$place_na[7]$stl2[7]
$stl[8]●$place_na[8]$stl2[8]
EOM if($count == 0){ print <<"EOM"; EOM }else{ ############################### # 結果を表示 ############################### if ($in{'page'} eq '') { $in{'page'} = 0; } $end_data = @new - 1; $page_end = $in{'page'} + $in{'view'} - 1; if ($page_end >= $end_data) { $page_end = $end_data; } $i = 1; foreach ($in{'page'} .. $page_end) { ($bseq1,$bseq2,$bseq3,$bseq4,$bseq5,$bseq6,$bseq7,$bseq8,$bseq9,$bseq10,$bseq11,$bseq12,$bseq13,$bseq14) = split(/<>/, $new[$_]); if($bseq6 ne ""){ $tseq6 = "[$bseq6 ]" ;}elsif($bseq6 eq ""){ $tseq6 = "" ;} if($bseq7 ne ""){ $tseq7 = "[$bseq7 ]" ;}elsif($bseq7 eq ""){ $tseq7 = "" ;} if($bseq8 ne ""){ $tseq8 = "[$bseq8 ]" ;}elsif($bseq8 eq ""){ $tseq8 = "" ;} if($bseq9 ne ""){ $tseq9 = "[$bseq9 ]" ;}elsif($bseq9 eq ""){ $tseq9 = "" ;} if($bseq10 ne ""){ $tseq10 = "[$bseq10 ]" ;}elsif($bseq10 eq ""){ $tseq10 = "" ;} if($bseq11 ne ""){ $tseq11 = "[$bseq11 ]" ;}elsif($bseq11 eq ""){ $tseq11 = "" ;} if($bseq12 ne ""){ $tseq12 = "[$bseq12 ]" ;}elsif($bseq12 eq ""){ $tseq12 = "" ;} if($bseq13 ne ""){ $tseq13 = "[$bseq13 ]" ;}elsif($bseq13 eq ""){ $tseq13 = "" ;} print <<"EOM"; EOM $i++; } close(IN); } #######カウント0の場合ここまで } elsif($in{'type'} == 3){ foreach $i (@Num){ if($in{'dis'} eq $move_na[$i]){ $stl[$i] = ""; $stl2[$i] = ""; } } print <<"EOM";
改修事例
指定された条件を満たす事例は登録されておりません。
■$bseq14
 疾患名$bseq4
 移動\能\力$bseq5
 改修場所 $tseq6$tseq7$tseq8$tseq9$tseq10$tseq11$tseq12$tseq13
移動\能\力
$stl[1]●$move_na[1]$stl2[1]
$stl[2]●$move_na[2]$stl2[2]
$stl[3]●$move_na[3]$stl2[3]
$stl[4]●$move_na[4]$stl2[4]
EOM if($count == 0){ print <<"EOM"; EOM }else{ ############################### # 結果を表示 ############################### if ($in{'page'} eq '') { $in{'page'} = 0; } $end_data = @new - 1; $page_end = $in{'page'} + $in{'view'} - 1; if ($page_end >= $end_data) { $page_end = $end_data; } $i = 1; foreach ($in{'page'} .. $page_end) { ($cseq1,$cseq2,$cseq3,$cseq4,$cseq5,$cseq6,$cseq7,$cseq8,$cseq9,$cseq10,$cseq11,$cseq12,$cseq13,$cseq14) = split(/<>/, $new[$_]); if($cseq6 ne ""){ $tseq6 = "[$cseq6 ]" ;}elsif($cseq6 eq ""){ $tseq6 = "" ;} if($cseq7 ne ""){ $tseq7 = "[$cseq7 ]" ;}elsif($cseq7 eq ""){ $tseq7 = "" ;} if($cseq8 ne ""){ $tseq8 = "[$cseq8 ]" ;}elsif($cseq8 eq ""){ $tseq8 = "" ;} if($cseq9 ne ""){ $tseq9 = "[$cseq9 ]" ;}elsif($cseq9 eq ""){ $tseq9 = "" ;} if($cseq10 ne ""){ $tseq10 = "[$cseq10 ]" ;}elsif($cseq10 eq ""){ $tseq10 = "" ;} if($cseq11 ne ""){ $tseq11 = "[$cseq11 ]" ;}elsif($cseq11 eq ""){ $tseq11 = "" ;} if($cseq12 ne ""){ $tseq12 = "[$cseq12 ]" ;}elsif($cseq12 eq ""){ $tseq12 = "" ;} if($cseq13 ne ""){ $tseq13 = "[$cseq13 ]" ;}elsif($cseq13 eq ""){ $tseq13 = "" ;} print <<"EOM"; EOM $i++; } close(IN); } #######カウント0の場合ここまで } print <<"EOM";
改修事例
指定された条件を満たす事例は登録されておりません。
■$cseq14
 疾患名$cseq4
 移動\能\力$cseq5
 改修場所 $tseq6$tseq7$tseq8$tseq9$tseq10$tseq11$tseq12$tseq13
EOM $next_line = $page_end + 1; $back_line = $in{'page'} - $in{'view'}; if ($back_line >= 0) { $sen = 1; print "\n"; } if ($page_end ne "$end_data") { $sen = 2; print "\n"; } print <<"EOM";
[←前の$in{'view'}件]  [次の$in{'view'}件→]
さらに絞込み検索
\n"; print "\n\n"; print "\n\n改修場所: 移動\能\力: 
\n"; print "\n\n"; print "\n\n疾患名: 移動\能\力: 
\n"; print "\n\n"; print "\n\n疾患名: 改修場所: 
EOM &footer; exit; } ###################### # デコード処理 # ###################### sub decode { local($buffer, $qu1, $value, @pairs); if ($ENV{'REQUEST_METHOD'} eq "POST") { $post_flag=1; if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $post_flag=0; $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach (@pairs) { ($qu1, $value) = split(/=/); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # S-JISコード変換 &jcode'convert(*value, "sjis", "", "z"); # タグ処理 if ($tagkey) { $value =~ s/<>/<>/g; } else { $value =~ s/\&/&/g; $value =~ s//>/g; } # 改行処理 if ($qu1 eq "comment") { $value =~ s/\r\n/
/g; $value =~ s/\r/
/g; $value =~ s/\n/
/g; } else { $value =~ s/\r//g; $value =~ s/\n//g; } # 削除情報 if ($qu1 eq 'del') { push(@DEL,$value); } $in{$qu1} = $value; } $in{'qu5'} =~ s/^http\:\/\///; $page = $in{'page'}; $pmode = $in{'pmode'}; # 日時の取得 $ENV{'TZ'} = "JST-9"; $time = time; ($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time); # 日時のフォーマット @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $date = sprintf("%04d/%02d/%02d(%s) %02d:%02d", $year+1900,$mon+1,$mday,$week[$wday],$hour,$min); # 1ページあたりの記事表示件数 if ($in{'cno'} eq ""){ $p_log = 10; } else { $p_log = $in{'cno'}; } $view = $in{'view'}; $type = $in{'ttype'}; } #################### #HEAD ############## #################### sub header { print "Content-type: text/html\n\n"; print <<"EOM"; テクノエイド住宅改修情報 $title
EOM open(IN,"../common/shtml/header.shtml") || &error("Open Error : header.shtml"); @head1 = ; close(IN); foreach $hd1 (@head1) { print $hd1; } open(IN,"../common/shtml/navigation.shtml") || &error("Open Error : navigation.shtml"); @head2 = ; close(IN); foreach $hd2 (@head2) { print $hd2; } print <<"EOM";
EOM } #################### #HEAD LINK########## #################### sub headlink{ print <<"EOM"; EOM } #################### #footer########## #################### sub footer{ print <<"EOM";

EOM open(IN,"../common/shtml/footer.shtml") || &error("Open Error : footer.shtml"); @foot1 = ; close(IN); foreach $pp1 (@foot1) { print $pp1; } open(IN,"../common/shtml/copyright.shtml") || &error("Open Error : copyright.shtml"); @foot2 = ; close(IN); foreach $pp2 (@foot2) { print $pp2; } print <<"EOM";
EOM } ###################### # エラー処理 # ###################### sub error { if ($lockflag) { &unlock; } if (-e $temfile) { unlink($temfile); } &header if (!$head_flag); print "

ERROR !

\n"; print "

$_[0]\n"; print "


\n\n\n"; exit; } ###################### # ホスト名取得 # ###################### sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } } ###################### # ロック処理 # ###################### sub lock { # 1分以上古いロックは削除する if (-e $lockfile) { local($mtime) = (stat($lockfile))[9]; if ($mtime < time - 60) { &unlock; } } local($retry) = 5; # symlink関数式ロック if ($lockkey == 1) { while (!symlink(".", $lockfile)) { if (--$retry <= 0) { &error('Lock is busy'); } sleep(1); } # mkdir関数式ロック } elsif ($lockkey == 2) { while (!mkdir($lockfile, 0755)) { if (--$retry <= 0) { &error('Lock is busy'); } sleep(1); } } $lockflag=1; } ###################### # ロック解除 # ###################### sub unlock { if ($lockkey == 1) { unlink($lockfile); } elsif ($lockkey == 2) { rmdir($lockfile); } $lockflag=0; } ###################### # チェックモード # ###################### sub check { &header; print "

Check Mode

\n"; print "\n\n\n"; exit; }