#!/usr/local/bin/perl #┌───────────────────────────────── #│ DAY COUNTER-EX MANAGER v3.3 (2001/10/20) #│ Copyright(C) KENT WEB 2001 #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── $ver = 'DAY COUNTER-EX v3.3'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #└───────────────────────────────── #============# # 設定項目 # #============# # ログファイル $logfile = "./dayx.dat"; # 日次記録ファイル $dayfile = "./day.dat"; # 月次記録ファイル $monfile = "./mon.dat"; # 集計一覧からの戻り先 $home = "../index.html"; # 集計一覧のタイトル名 $title = "旭川アクセス集計一覧"; # タイトル文字色 $t_color = "#008080"; # グラフ画像 # → 絶対パスなら http:// から書く $graph1 = "./blue.gif"; $graph2 = "./red.gif"; # 月間グラフ幅の調整 # 1か月平均 4桁で50〜100 5桁で200〜500程度 $mKEY = 50; # 日計グラフ幅の調整 # 1日平均 2桁で1〜2 3桁で5〜10 4桁で30〜60程度 $dKEY = 2; # bodyタグ $body = ''; #============# # 設定完了 # #============# # ログファイル読み込み open(IN,"$logfile") || &error("Open Error : $logfile"); $data = ; close(IN); ($day,$yes,$to,$all,$week,$ip) = split(/<>/, $data); # 時間取得 ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $date = sprintf("%02d/%02d (%s) ",$mon+1,$mday,$week[$wday]); $D_Y = sprintf("%04d/%02d",$year+1900,$mon+1); # 日次アクセスファイルを読み込み open(IN,"$dayfile") || &error("Open Error : $dayfile"); @DayFile = ; close(IN); push(@DayFile,"$date<>$to<>\n"); # 月間アクセスファイルを読み込み open(IN,"$monfile") || &error("Open Error : $monfile"); @MonFile = ; close(IN); $under = pop(@MonFile); if ($under =~ /^(\d+)\/(\d+)<>(\d+)/) { $Y="$1/$2"; $C=$3; } if ($Y eq $D_Y) { $C2 = $C + $to; push(@MonFile,"$Y<>$C2<>\n"); } else { push(@MonFile,"$D_Y<>$to<>\n"); } # HTMLを表示 &header; print <<"EOM";
戻る

$title

[日次アクセス一覧] [月次アクセス一覧]

  日次アクセス一覧

EOM $flag=0; $tochu=0; $i=0; foreach (@DayFile) { $i++; chop; ($m_d,$dcnt) = split(/<>/); if ($i == 1 && $m_d =~ /^(\d+)\/(\d+)/) { if ($2 != 1) { $tochu=1; } } # グラフ幅を指定 $width = $dcnt / $dKEY; $width = int($width); # 桁処理 $dcnt = &filler($dcnt); # 色変更 $m_d =~ s/Sat/Sat<\/font>/; $m_d =~ s/Sun/Sun<\/font>/; print "\n"; print "\n"; } print <<"EOM";
$m_d   $dcnt  


  月次アクセス一覧

EOM $flag=0; foreach (@MonFile) { ($y_m,$mcnt) = split(/<>/); ($year,$mon) = split(/\//, $y_m); if ($_ eq "$MonFile[$#MonFile]") { if ($day == 1) { $avr = ' - '; } else { if ($tochu) { $waru = @DayFile-1; } else { $waru = $day-1; } $avr = int (($C / $waru) +0.5); $avr = &filler($avr); } } else { $lastday = &LastDay("$year","$mon"); $avr = int (($mcnt / $lastday) +0.5); $avr = &filler($avr); } # グラフ幅を指定 $width = $mcnt / $mKEY; $width = int($width); # 桁処理 $mcnt = &filler($mcnt); if ($year ne "$year2") { print "\n"; } print ""; print ""; print "\n"; $year2 = $year; } ## 著作権表示(削除改変禁止) print <<"EOM";
年月  月間   日平均  グラフ

$y_m$mcnt$avr 

Copyright (C) Kent Web 2001
$ver
EOM exit; #----------------# # 月の末日計算 # #----------------# sub LastDay { local($year, $mon) = @_; local($lastday); $lastday = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) [$mon - 1] + ($mon == 2 && (($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0)); return $lastday; } #--------------# # HTMLヘッダ # #--------------# sub header { print "Content-type: text/html\n\n"; print <<"EOM"; $title $body EOM } #----------------# # 桁区きり処理 # #----------------# sub filler { local($_) = $_[0]; 1 while s/(.*\d)(\d\d\d)/$1,$2/; return $_; } #--------------# # エラー処理 # #--------------# sub error { &header; print <<"EOM";

ERROR !

$_[0]


EOM exit; }