2006.12.18




 特徴 
主に次のような特徴があります。

1. 累計、当日、前日、時間単位のアクセスを記録してカウントを表示ます。
2. ID登録して複数ページのアクセスを別々に集計できます。
3. パラメータの記述だけで複数IDの特定項目を自在に合計して出力できます。
4. IPアドレスのチェックによる二重カウント防止を設定できます。
5. SSIを使わずにCGIだけで動作し、出力に任意の画像も使えます。
6. IDや数値は管理画面で簡単に登録、変更、削除できます。
7. 記録ファイルのデータが消失しても自動的にバックアップから復元します。
8. アクセス、設定、動作環境の簡易リポートを見ることができます。

時間単位のアクセス 
パラメータで時間を指定して、その間のアクセスを表示します。最近24時間のカウントを表示すると昨日・今日の意味を合わせ持つ表示になるので面白いと思います。
本来、この機能を表示するための記録ファイルのサイズは大きなものになりますが、このプログラムでは気にする必要のないサイズに収まるように工夫されています。刻々と変化するスピードメーターのような表示になります。

データ消失の復元 
サーバの事故など、ファイルの破損はプログラムの工夫では避けられない場合があります。そこで、バックアップを作ってリスクを分散します。ファイルを読み込む際にデータ消失のチェックを行い、異常が確認された場合は直前のバックアップを使用します。
復元が行われた回数は記録ファイルに残るのでリポート画面で確認できます。

※このページ内のプログラムや画像はご自由にお使いください。


サンプル
このサイトで使用しているカウンタとパラメータの記述例です。
全IDの合計をクリックするとリポートを表示します。

カウンタのリポート   全IDの合計、カウントアップしない
 〜?mode=sum&cnt=0
全IDの最近24時間の合計、カウントアップしない、gif2の画像
 〜?mode=sum&term=24&cnt=0&gif=gif2
このページのカウント、gif3の画像
 〜?id=dqpb&gif=gif3
dq5とdq8の昨日の合計、カウントアップしない、gif4の画像、5桁
 〜?id=dq5:dq8&term=yesterday&cnt=0&gif=gif4&fgr=5


    











プログラム
次の圧縮ファイルの扱いやすいほうをダウンロードして解凍してください。
どちらの形式も内容は同じです。

ファイル 形式 サイズ バージョン
idcnt23.lzh LHA 14,888バイト Ver2.3 - 2006.12.18
idcnt23.zip ZIP 15,225バイト

含まれるファイル
idcnt.cgi
log.cgi
0.gif
 :
9.gif


更新暦 
2006.12.18 Ver2.3
 ファイル破損を認識しないケースを修正

2005.11.21 Ver2.3
 ファイル破損チェックの信頼性を向上
 復元回数のリセット機能追加


 設定 
idcnt.cgiを開いて、以下の項目の赤字の部分を修正します。

#!/usr/bin/perl
 サーバ規定のPerlへのパスを記述する。

$Pswd = 'abcd';
 管理画面を呼び出すパスワード。半角英数字で設定する。

$Identify = 1;
 同一IPアドレスからの連続カウントを防止する場合は1、防止しない場合は0。

$Figure = 2;
 パラメータの指定がない場合、この桁まで0を埋めて表示する。

$Hour = 24;
 記録を残す時間。24〜任意。数値を大きくするとログファイルも大きくなる。

$Dir = 'gif1';
 パラメータの指定がない場合、このディレクトリにある画像を使う。

$ErrImg = 'xxx.xxx';
 エラー発生時に出力する画像。gif、jpg、jpeg、png形式の画像が使える。
 指定しない場合は内蔵の画像を出力する。

$LockKey = 1;
 ファイルロック形式。symlinkが使える場合は1、使えなかったり分からない場合は0。

$Backup = 1;
 ログ破損復元機能を使う場合は1、使わない場合は0。
 この機能を使うと復元した回数がリポートに表示されます。

$Banner1 = "<div>〜</div>\n";
$Banner2 = "<div>〜</div>\n";
 サーバの都合でタグを入れる必要がある場合「〜」を書き換える。
 <div>に手を加えても良い。$Banner1は画面上部、$Banner2は画面下部。

$LogFile = './log.cgi';
 記録ファイル名。必要がなければこのままでよい。

$BackFile = './back.cgi';
 バックアップのファイル名。必要がなければこのままでよい。

$LockFile = './lock/idcnt.lock';
 ロックファイル名。必要がなければこのままでよい。


 設置 
サーバにカウンタ用のディレクトリを任意の名前(counterなど)で用意します。
構成例のように画像とファイルロック用のディレクトリを作成します。
各ディレクトリにファイルをアップロードして、アクセス権を[xxx]の値に設定します。
back.cgiはカウンタを使用すると自動的に生成されます。

構成例 
public_html/ index.html
  |
  +-- counter/ idcnt.cgi[755]
        |      log.cgi  [666]
        |      back.cgi [666]
        |
        +-- lock[777]/
        |
        +-- gif1/ 0.gif
        |           :
        |         9.gif
        |
        +-- gif2/ 0.gif
        |           :
        :         9.gif


使い方
カウンタの呼び出し 
表示するページに次のようなタグを記述します。
 <img src="カウンタディレクトリ/idcnt.cgi?パラメータ&パラメータ">

パラメータ 
「?」の後に「&」で区切っていくつでも指定可能です。順番に決まりはありません。

mode=sum
 登録されている全てのIDのカウントを合計する。

id=xxx:xxx
 IDの指定。「:」で区切って複数指定すると、その合計を表示する。
 先頭に記述したIDがカウントアップの対象。
 この記述がない場合はメインIDがカウントアップの対象。

term=xxx
 xxxに「today」を記述すると当日のカウント。
 xxxに「yesterday」を記述すると昨日のカウント。
 xxxに「整数」を記述するとその時間内のカウント。
 この記述がない場合は累計。

cnt=0
 カウントアップせずに記録のカウントを表示する。

gif=xxx
 任意の画像があるディレクトリを指定する。

fgr=xxx
 この桁まで0を埋めて表示する。


 管理 
リポート 
カウンタの画像などに下記のリンクを設定しておくと便利です。
URLをブラウザで呼び出してもリポートを見ることができます。
 <a href="カウンタディレクトリ/idcnt.cgi?mode=report"><カウンタのタグ></a>

ID登録・数値・設定の変更 
リポート画面下のフォームにパスワードを記入して認証ボタンを押します。
設定変更の画面のフォーム入力でID登録、ID削除、ID名変更、合計値の変更ができます。