#!/usr/local/bin/perl
# $count_data = '/カウントファイルを指定'; #カウントデータ
# $access_data = '/ログ保存ファイルを指定'; #アクセス者データ
$keta = 6; #何桁表示?
$now = time; #ただいまの時刻
$svtime = $now + 1200; #満了時刻算出 (20分)
$remoteaddx = $ENV{'HTTP_X_FORWARDED_FOR'};
$remoteaddr = $ENV{'REMOTE_ADDR'};
if ($remoteaddx ne "") {$remoteaddr = $remoteaddx ;}
$referer = $ENV{'HTTP_REFERER'};
$line = "$svtime,$now,$remoteaddr,$referer,\n";
open(alist,"+<$access_data") || die "Access data file not found!\n" ;
flock(alist,2);
@fdt = ;
$find = "no";
@dt = ();
foreach $fline (@fdt) {
($etime,$stime,$name,$ref,$eol) = split(/\,/,$fline);
if ($etime >= $now) {
if ($name eq $remoteaddr) {
$find = "yes"; #満了時間内で同じ人
} else {
push(@dt,$fline);
}
}
}
push(@dt,$line); #自分自身の情報
open(cnt,"+<$count_data");
$count = ;
if ($find eq "no") {
$count++;
seek(cnt,0,0); #出力桁数が減ることはないのでtruncate()不要
print cnt $count;
}
close(cnt);
seek(alist,0,0); #先頭位置へポジションをセット
truncate(alist, 0); #出力ファイルのサイズを0にセット
print alist @dt;
close(alist);
# 文字数のカウント&表示フォーマットへ
$pcount = "";
$i=length($count);
if ($i < $keta) {
$pcount = '0' x ($keta - $i); #0を繰り返す
}
$pcount .= $count;
print qq{<font size="-1">count : $pcount</font>};
exit;
|