アクセスカウンタ 技術的解説


    アクセスカウンタのCGI起動、ファイルへの書き込みは以下の手順で行います。

  1. ページを見た時すぐにCGIが起動されるように、<img>タグを使用
  2. カウントファイルを読み出し、カウントを1回増やして保存
  3. カウントの数字に合わせて数字の画像を出力

  1. ページを見た時すぐにCGIが起動されるように、<img>タグを使用
    カウンタを表示したい位置に以下のように書きます。
    <img src="tfc.cgi?表示桁数+カウント増減数">
    拡張子はここではcgiにしていますが、サーバによってはplにすべき場合もあります。

  2. カウントファイルを読み出し、カウントを1回増やして保存

  3. カウントの数字に合わせて数字の画像を出力
    画像は一般にはGIFを使っているケースが多いですが、ここではXBMにします。 (作るのが簡単だから)
    $w = $keta * 16;	# $ketaに表示するカウンタの桁数が入っているとする
    $h = 16;
    
    print("Content-type: image/x-bitmap\n\n");
    print("#define tf_width $w\n#define tf_height $h\n");
    print("static char tf_bits[]={\n");
    
    # 0から9までの画像データ(16×16ピクセル)
    @digits = (
    128,7,64,8,32,16,16,16,16,16,8,16,8,16,4,16,4,16,4,8,4,8,4,4,4,4,4,2,8,1,240,0,
    0,12,0,10,0,5,128,4,64,2,0,2,0,1,0,1,128,0,128,0,64,0,64,0,32,0,32,0,16,0,16,0,
    128,7,64,8,32,16,16,16,16,16,0,16,0,8,0,4,0,2,0,1,128,0,64,0,32,0,16,0,40,16,196,15,
    192,3,32,4,16,8,16,8,0,8,0,4,0,2,128,1,0,2,0,4,8,4,4,4,4,4,4,2,8,1,240,0,
    128,0,128,0,64,0,64,0,32,4,32,4,16,2,16,2,8,1,8,1,252,15,128,0,64,0,64,0,32,0,32,0,
    128,0,128,31,64,0,64,0,32,0,32,0,16,0,240,1,0,2,0,4,0,4,4,4,4,4,4,2,8,1,240,0,
    0,6,0,1,128,0,64,0,32,0,32,0,16,0,248,1,8,2,4,4,4,4,4,4,4,4,4,2,8,1,240,0,
    64,0,192,31,32,16,32,16,16,8,16,8,0,4,0,4,0,2,0,2,0,1,0,1,128,0,128,0,64,0,64,0,
    128,7,64,8,32,16,16,16,16,16,16,8,32,4,224,3,16,4,8,8,4,8,4,8,4,8,4,4,8,2,240,1,
    128,7,64,8,32,16,16,16,16,16,16,16,16,8,32,8,192,7,0,4,0,2,0,2,0,1,0,1,128,0,128,0);
    
    # 指定した桁数の画像を作る $countに表示すべき数値が入っているとする
    $fwd = sprintf("%0${keta}d",$count);
    for ($i = 0; $i < $h; $i++){
            foreach $k (0..($keta-1)) {
                    $dg = substr($fwd,$k,1);
                    printf("0x%02x,0x%02x,",$digits[$dg*32+$i*2],$digits[$dg*32+$i*2+1]);
            }
    }
    print "};\n";
    

画像形式について

XBMを使う長所・短所は次のようになります。

長所

短所