#! c:/perl/bin/perl
#
# fxcnt.cgi
# アクセスカウンタ
#
# 1.004 : 11/17/06 : 時間設定を追加
# 1.003 : 11/11/06 : chmodを修正
# 1.002 : 7/27/06 : chompを修正
# 1.001 : 7/1/06 : Updated
# 1.00 : 1/23/05 : Created
#
# http://www.hidekik.com/
#
# $Id: fxcnt.cgi,v 1.7 2006/11/11 02:41:25 Hideki Kanayama Exp $
# Copyright(c) 2005-2006, Hideki Kanayama, All Rights Reserved.
use strict;
use CGI::Carp qw(fatalsToBrowser);
# カウントログファイル
my $countfile = "count.log";
# 表示フォーマット
my $format = '今日: $t_count, 昨日: $y_count, トータル: $a_count
\n';
# 時間設定
my $localtime_en = 0;
my $offset = 9;
my $today = time;
my $yesterday = $today - 86400;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= $localtime_en ? localtime($today) : gmtime($today + $offset * 3600);
my ($ysec,$ymin,$yhour,$ymday,$ymon,$yyear,$ywday,$yyday,$yisdst)= $localtime_en ? localtime($yesterday) : gmtime($yesterday + $offset * 3600);
my $a_count = 0;
my $y_count = 0;
my $t_count = 0;
if (open(FILE,"< $countfile")){
flock FILE, 2;
while (){
chomp;
my ($cmon,$cday,$cyear,$count)=split(/,/);
if ($cmon eq 'init'){
$a_count = $count;
} else {
$a_count += $count;
}
if ($cmon == $ymon && $cday == $ymday && $cyear == $yyear) {
$y_count = $count;
} elsif ($cmon == $mon && $cday == $mday && $cyear == $year) {
$t_count = $count;
}
}
close(FILE);
}
$t_count++;
$a_count++;
print "Content-Type: text/html\n\n";
eval "print \"$format\";";
my $initval = $a_count-$t_count-$y_count;
open (RDFILE,"+< $countfile") or open (RDFILE,"> $countfile") or print "$countfileを作成できません。";
flock RDFILE, 2;
truncate RDFILE, 0;
seek RDFILE, 0, 0;
print RDFILE 'init,,,' . $initval . "\n";
print RDFILE "$ymon,$ymday,$yyear,$y_count\n";
print RDFILE "$mon,$mday,$year,$t_count\n";
close(RDFILE);
chmod 0666, $countfile;