#! /usr/bin/perl # # sccnt.cgi # シークレットカウンタ(カウント) # # 1.005 : 11/19/06 : Content-Typeの位置を修正 # 1.004 : 11/17/06 : 時間設定を追加 # 1.003 : 11/11/06 : chmodを修正 # 1.002 : 10/19/06 : Content-Type表示を追加 # 1.001 : 7/27/06 : chompを修正 # 1.00 : 7/21/06 : Created # # http://www.hidekik.com/ # # $Id: sccnt.cgi,v 1.6 2006/11/19 05:39:21 Hideki Kanayama Exp $ # Copyright(c) 2005-2006, Hideki Kanayama, All Rights Reserved. use strict; use CGI::Carp qw(fatalsToBrowser); # カウントログファイル my $countfile = "count.log"; # 時間設定 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++; my $initval = $a_count-$t_count-$y_count; print "Content-Type: text/html\n\n"; 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;