#!/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"; 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{count : $pcount}; exit;