#! 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;