#!/usr/bin/perl ################################ ## かんたんグラフィカル ## ## アクセスカウンター Ver 1.0 ## ## 解説と原本は、http://www.paddie.com/cgiroom.html ## ## by Paddie. 28 Apr.2000 ## ################################ $keta = 5;# 表示される最低桁数です。 $| = 1; # おまじない $imagedir = 'http://www.paddie.com/images'; $width = 12; $height = 17; $cgidir = '/home/httpd/cgi-bin'; $lock_file = "$cgidir/gcount.dat"; $count_file = "$cgidir/gcount.count"; if ($ENV{'REQUEST_METHOD'} !~ /(GET)|(POST)/) {exit (0);}#不正なアクセスを遮断 #同時アクセスの検出 $wait = 0; while(-f "$lock_file") { $wait++; if ($wait > 20) { open (IN,"$lock_file"); $check = <IN>; close IN; if ($check <= time - 20) {unlink($lock_file);} else { print "Content-type: text/plain\n\nカウント失敗"; exit(0); } } sleep(1); } ## ロックファイル作成 ## open(LOCK, ">$lock_file"); print LOCK time; close(LOCK); ## カウント数読み込み ## open (IN,"$count_file"); $count = <IN>; close IN; $count++; ## 現在のカウント数書き込み ## open (OUT,">$count_file"); print OUT "$count"; close OUT; ## 桁調整 ## while (length $count < $keta) {$count = "0".$count;} ## 出力 ## @counter = split (//,$count); print "Content-type: text/plain\n\n"; foreach $number (@counter) {print "<IMG SRC=\"$imagedir/$number\.gif\" ALT=\"$number\" BORDER=\"0\" WIDTH=\"$width\" HEIGHT=\"$height\">";} ## ロックファイル削除 ## unlink($lock_file); ## 処理終了 ## exit;