#│ DAY COUNTER-EX v3.3 (2001/10/20) #│ Copyright(C) KENT WEB 2001 .....中略..... #============# # 設定項目 # #============# .....中略..... # IPアドレスの二重カウントチェック # 0 : チェックしない # 1 : チェックする $ip_check = 1; # ----------------追加改造開始----------------- # IPアドレス記録数で指定したIPアドレスは、記録されカウントされません。 # 従って、自サイトのURLから、カウンタを設置しているトップページに # 戻ってくるカウントを防止出来ます。 # IPアドレス記録ファイル $ipalogfile = "./ipa.dat"; # IPアドレス記録数(2以上にしないと機能しません。) # 1日の総カウント数の約10分の1を目安にしますと、 # 2時間程度のIPアドレスを溜め込むことが出来ます。 $ipa_num = 100; # LAN 内のプライベートセグメントアドレス(192.168.1.0)を設定して、 # LAN 内からのアクセス(192.168.1.*)に対して、カウントされないようにします。 # 分からなければ、ルータやクライアント機のIPアドレスを入力して下さい。 $PrivateSegAddr = '192.168.1.0'; # ----------------追加改造終了----------------- #============# # 設定完了 # #============# .....中略..... # IPチェック $flag=0; if ($ip_check) { $addr = $ENV{'REMOTE_ADDR'}; if ($addr eq "$ip") { $flag=1; } # ----------------追加改造開始----------------- # LAN 内からのアクセスに対して、カウントされないようにします。 if (pack("C3", split(/\./, $addr)) eq pack("C3", split(/\./, $PrivateSegAddr))) { $flag=1; } if (!$flag && $ipa_num > 1) { # IPアドレス記録データの読み込み open(IN,"$ipalogfile") || &error; $ipadata = ; close(IN); # IPアドレス記録ファイルを分解して、配列に格納 @ipa[0..$ipa_num - 2] = split(/<>/, $ipadata); # IPアドレスチェック(アクセスしたIPアドレスが存在したら、カウントしない) foreach (@ipa) { if ($_ eq $addr) { $flag=1; last; } } } if (!$flag) { # アクセスしたIPアドレスが存在しなかったら、 # IPアドレスを追加して、記録ファイル様式に変換 $ipa = $addr . '<>'; foreach (@ipa) { $ipa .= $_ . '<>'; } # IPアドレス記録ファイルを更新 open(OUT,">$ipalogfile") || &error; print OUT $ipa; close(OUT); } # ----------------追加改造終了----------------- }