#!/usr/bin/perl ################################################################## # Program : counter.cgi(Perl) # Permission : 755 # Date_written : 2000/01/28 # Author : 良寛 # E-mail : ryokan@po.minc.ne.jp # HomePage : http://www.minc.ne.jp/~ryokan/ ################################################################## # # -----注意事項--------------------------------------------------- # (1)このスクリプトはフリーソフトです。このスクリプトを使用した # いかなる損害に対して作者は一切の責任を負いません。 # (2)設置に関する質問は質問コーナーにお願いいたします。 # ---------------------------------------------------------------- # require './gifcat.pl'; #=== 設定(ここから)============================================= $fig = 5; # カウンタ表示桁数 #=== 設定終了(ここまで)========================================= $cntfile = "count.dat"; # カウンタファィル $lockfile = "lock.dat"; # ロックファイル  # 存在すればカウント不可 #=== 訪問日の取得 ===== ($sec,$min,$hour,$day,$mon,$year,$wday) = localtime(time); $date = "$day"; $lockflag = &lock; if ($lockflag == 0){ &error;} open (IN,"$cntfile") || &error; @lines = ; close(IN); ($logday,$count) = split (/\|\|\|/,$lines[0]); $count =~s/\n//g; if ($logday != $date) { @lines = (); } $address = $ENV{'REMOTE_ADDR'}; @data = @lines; $addressflag = 0; # synapse-DIGIPRO # #foreach $line (@data){ # $line =~s/\n//g; # if ($line eq $address){ # $addressflag = 1; # last; # } #} #unless ($addressflag == 1){ $count=$count +1; $lines[0] = "$date|||$count\n"; push(@lines,"$address\n"); open(OUT,">$cntfile") || &error; print OUT @lines; close(OUT); #} # synapse-DIGIPRO if (-e $lockfile){unlink($lockfile);} $cntstr = sprintf(sprintf("%%0%dld",$fig),$count); printf("Content-type: image/gif\n"); printf("\n"); @files = (); for ($i=0;$i$lockfile"); close(LOCK); $flag = 1; last; } sleep(1); } $flag; } #=== エラー処理 ======= sub error { if (-e $lockfile){unlink($lockfile);} exit; }