#!/usr/bin/perl #hnsアクセスログ・ビューワー(2003年7月6日版) #配布場所:http://homepage3.nifty.com/cinema1987/data/hns_for_pnamazu.html #log.cgiのURL $logurl = "http://www.foo.bar.ne.jp/~hoge/diary/log.cgi"; #このスクリプトの名前 $script = "hns_logview.cgi"; #-----------設定終了------------------------------------------- my $today = sprintf("%04d/%02d/%02d", (localtime)[5]+1900,(localtime)[4]+1,(localtime)[3]); my ($year, $mon, $mday) = (localtime(time - 24*60*60))[5,4,3]; my $yesterday = sprintf("%04d/%02d/%02d", $year+1900,$mon+1,$mday); $mmyear=$year+1900; &decode; my $myear = $FORM{'myear'}; my $mymonth = $FORM{'mymonth'}; my $myday = $FORM{'myday'}; my $date = sprintf("%04d/%02d/%02d", $myear,$mymonth,$myday); if($mymonth eq "" && $myday eq ""){ print "Content-type: text/html\n\n"; &html } elsif($myear eq ""){ &error ("年を入力してください。") } elsif($mymonth eq ""){ &error ("月を入力してください。") } elsif($myday eq ""){ &error ("日を入力してください。") } elsif($myear =~ /\D/ ){ &error ("半角数字で入力してください。") } elsif($mymonth =~ /\D/ ){ &error ("半角数字で入力してください。") } elsif($myday =~ /\D/ ){ &error ("半角数字で入力してください。") } else{ &jump } #---------------------------------------------------------------- sub jump{ print "Location: $logurl?$date\n\n"; } sub html{ print <<"EOM"; hnsアクセスログ・ビューワー

hnsアクセスログ・ビューワー

hnsのアクセスログを見るスクリプトです。
日付を指定してlog.cgiを起動し、指定日のログを見ることができます。

月、日の入力は半角数字で入力してください。
3月3日の場合は3と3か、03と03のように入力します(どちらでもいいです)。

当然のことながら、ログのない日を入力しても無意味です。

本日分($today)

昨日の分($yesterday)

日のログを見る

[戻る]
$script
EOM } sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST"){ if ($ENV{'CONTENT_LENGTH'} > 20) { &error ("フォーム入力文字列のサイズが大きすぎます。"); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{QUERY_STRING}; } @pairs = split(/&/,$buffer); foreach (@pairs) { ($name, $value) = split(/=/, $_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s//>/g; #htmlタグを禁止する $value =~ s/\r//g; #改行コードの\rを消去 $FORM{$name} = $value; } } sub error { print "Content-type: text/html\n\n"; print <<"EOF"; エラー

エラー! $_[0]


戻る
EOF exit; }