改悪して 使用している cgi プログラムですが すこし くどい ようなので エ
スケープ した部分を すこし 修正します。これは ”\
”条件によ
り ”¥” 円記号に 見える 場合も有りますが、見てる環境により何だ? と思
われるかも しれませんが この記号で ”< ”や” /
”を エスケープ したつもりで
した 当然 ”"” も したいけれど これはそのまま エスケープ で残す事にしていま
す。
最初に 試験用として 以下のものを作成していました
$ cat smp-time-test.cgi #!/usr/local/bin/perl -w use strict; my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $Ctime_string = localtime(time); $mon+=1; $yday+=1; $mon = $mon < 10 ? $mon = "0".$mon : $mon; $mday = $mday < 10 ? $mday = "0".$mday : $mday; $hour = $hour < 10 ? $hour = "0".$hour : $hour ; $min = $min < 10 ? $min = "0".$min : $min; $sec = $sec < 10 ? $sec = "0".$sec : $sec; $year+=1900; my $kouki+=$year+660; my @Wdayname = ("日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"); my @Momnthname = ("","睦月","如月","弥生","卯月","皐月","水無月","文月",\ "葉月"," 長月","神無月","霜月","師走"); my @Ddatename = ("","一日","二日","三日","四日","五日","六日","七日",\ "八日","九日","十日","十一日","十二日","十三日","十四日","十五日",\ "十六日","十七日","十八日","十九日","二十日","二十一日",\ "二十二日","二十三日","二十四日","二十五日","二十六日","二十七日",\ "二十八日","二十九日","三十日","三十一日"); print "Content-type: text/html;\n\n"; print "\<!DOCTYPE html PUBLIC \"-\/\/w3c\/\/DTD HTML 4.01 Transitional\/\/EN\">\n"; print "\<meta http-equiv=\"content-type\" content=\"text\/html; charset=EUC-JP\">\n"; print "\<html lang=\"ja\"> \n"; print "\<head>\n"; print "\<title>sample form 002 \<\/title>\n"; print "\<\/head>\n"; print "\<body>\n"; print "今の 時間は $hour 時 $min 分 $sec 秒 です。\n"; print "\n"; print "\n"; print "今日は 西暦 $year 年 $Momnthname[$mon] $Ddatename[$mday] $Wdayname[$wday]です。\n"; print "\n"; print "皇紀 $kouki 年です \n"; print "\n"; print "確認用 : $Ctime_string\n"; print "\<\/body>\n"; print "\<\/html>\n";
< 、 ”、/ とかは \
にて エスケープ してあります
今回 は 以下のものに 置き換えました
#!/usr/local/bin/perl -w use strict; my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $Ctime_string = localtime(time); $mon+=1; $yday+=1; $mon = $mon < 10 ? $mon = "0".$mon : $mon; $mday = $mday < 10 ? $mday = "0".$mday : $mday; $hour = $hour < 10 ? $hour = "0".$hour : $hour ; $min = $min < 10 ? $min = "0".$min : $min; $sec = $sec < 10 ? $sec = "0".$sec : $sec; $year+=1900; my $kouki+=$year+660; my @Wdayname = ("日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"); my @Momnthname = ("","睦月","如月","弥生","卯月","皐月","水無月",\ "文月","葉月","長月","神無月","霜月","師走"); my @Ddatename = ("","一日","二日","三日","四日","五日","六日","七日",\ "八日","九日","十日","十一日","十二日","十三日","十四日","十五日",\ "十六日","十七日","十八日","十九日","二十日","二十一日","二十二日",\ "二十三日","二十四日","二十五日","二十六日","二十七日","二十八日",\ "二十九日","三十日","三十一日"); print "Content-type: text/html;\n\n"; print "<!DOCTYPE html PUBLIC \"-//w3c//DTD HTML 4.01 Transitional//EN\">\n"; print "<meta http-equiv=\"content-type\" content=\"text\/html; charset=EUC-JP\">\n"; print "<html lang=\"ja\"> \n"; print "<head>\n"; print "<title>sample form 002 </title>\n"; print "</head>\n"; print "<body>\n"; print "今の 時間は $hour 時 $min 分 $sec 秒 です。\n"; print "\n"; print "\n"; print "今日は 西暦 $year 年 $Momnthname[$mon] $Ddatename[$mday] $Wdayname[$wday]です。\n"; print "\n"; print "皇紀 $kouki 年です \n"; print "\n"; print "確認用 : $Ctime_string\n"; print "</body>\n"; print "</html>\n";
これを 設定して 当然 perl のパスを合わせないと いけませんが アクセス した結果の log を 見ると
/* 最初は log には なにもなし */ sv:/var/data/www/apache2/logs# ls -l total 4 -rw-r--r-- 1 root root 0 Sep 27 21:42 access_log -rw-r--r-- 1 root root 0 Sep 27 21:42 error_log -rw-r--r-- 1 root root 4 Sep 26 23:15 httpd.pid /* html ファイルに アクセスした */ sv:/var/data/www/apache2/logs# ls -l total 8 -rw-r--r-- 1 root root 94 Sep 27 21:42 access_log -rw-r--r-- 1 root root 0 Sep 27 21:42 error_log -rw-r--r-- 1 root root 4 Sep 26 23:15 httpd.pid sv:/var/data/www/apache2/logs# cat access_log 192.168.0.5 - - [27/Sep/2007:21:42:53 +0900] "GET /~aite/test/002_test.html HTTP/1.1" 200 629 /* html ファイル から cgi に アクセスした */ sv:/var/data/www/apache2/logs# ls -l total 8 -rw-r--r-- 1 root root 190 Sep 27 21:43 access_log -rw-r--r-- 1 root root 0 Sep 27 21:42 error_log -rw-r--r-- 1 root root 4 Sep 26 23:15 httpd.pid sv:/var/data/www/apache2/logs# cat access_log 192.168.0.5 - - [27/Sep/2007:21:42:53 +0900] "GET /~aite/test/002_test.html HTTP/1.1" 200 629 192.168.0.5 - - [27/Sep/2007:21:43:13 +0900] "POST /cgi-bin/smp-time-test.cgi HTTP/1.1" 200 370
もう少し すっきり したいけど それは 又 後で考えましょう。
にゃんたろう 拝!
2007年 9月24日 (月) 21:12:24 JST 作成