[道里千虎の館]

◆ SDcountH 説明書

(c) Sentora Dori 2001/01/21

■ 仕様

注意:
 このプログラムを利用した結果おこるいかなるトラブルに対しても、当方では対処しませんので、各ユーザーの責任でご使用ください。
 また、予告なく変更することがありますので、ご了承ください。

■ index


■ 機能

 CGIを用いたイメージタグ埋め込み型のカウンターです。 
 Ver.1.00はCGIの初心者でも簡単に扱えますし、ファイルサイズが小さく余計な機能がないので高速な動作向けです。以下の特徴があります。 

Ver.1.00 Ver.2.02 Ver1.00の機能+ [index]

■ ソース

プログラム

Ver.1.00

Ver.2.02


(ダウンロード後、ファイル名が"-cgi.txt"、"-pl.txt"となってるものを".cgi"、".pl"に変更してください)

※ GIF画像をつなげるためのライブラリ gifcat.pl は、とほほ氏 (s-hasei@mtg.biglobe.ne.jp) によるものです。詳細は「とほほのWWW入門」のページをご覧ください。


カウンタ用gif画像 ※ 上の画像はカウンタ画像がない人のためのサンプルです。他の画像を用いてもかまいません。


[index]

■ インストール

  1. ソースから必要なファイルをダウンロードする。カウンタ用のgif画像(0〜9の数字の画像)がなければ、gif画像もダウンロードする。

    ※ ネット上のどこからか探してくるか、または自分で作成してもいいです。
    ただし、アニメーション画像は使用できません。他にも使用できない画像があるかもしれませんので、表示がおかしくなるようでしたら、他の画像に変更してください。

  2. SDcountH10.cgi または SDcountH20.cgi (以下、SDcountH**.cgi と省略)の最上部のPerlのパスを正しく設定する。

    (例) #!/usr/local/bin/perl

    ※ PerlのパスはUNIXの種類やサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。

  3. SDcountH**.cgi の上部にある「変数設定」部分を編集する。

    Ver.1.00


    Ver.2.02



    ※注1 データファイルをプログラムと同じ場所に置く場合は $basedir=".";のまま。
    ※注2 ログをとる場合は$takelogを1にし、さらにとるログの種類に応じてその下の項目も1に設定してください。0に設定するとそのログはとりません。
    ※注3 イメージタグ内でもログをとるかとらないか指定することができ、指定した場合はそちらが優先されます。イメージタグで指定しない場合は、$takelogの値が有効になります。

  4. SDcountH**.cgi, gifcat.pl を FTPのアスキーモードで転送し、CGIの使用できるディレクトリに置く(※注4)。パーミッションをそれぞれ755644にする。
     
    (telnetの場合、以下同様。)
    % chmod 755 SDcountH**.cgi
    % chmod 644 gifcat.pl

    ※注4 CGIの使用ディレクトリはサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。(通常は cgi-bin 以下のディレクトリであることが多い。)

  5. Ver2.02 の場合は、SDcountlog.cgi も同様にFTPで転送して上と同じディレクトリに置く。 パーミッションをそれぞれ755644にする。

    % chmod 755 SDcountlog.cgi

  6. 上でファイルを置いたディレクトリにディレクトリ img を作る。パーミッションを755にする。

    % mkdir img
    % chmod 755 img

  7. ディレクトリ img に移動し、ディレクトリ default を作る。パーミッションを755にする。

    % cd img
    % mkdir default
    % chmod 755 default

  8. ディレクトリ default に移動しこのディレクトリ中に、gif画像ファイルをFTPでバイナリ転送する。画像のファイル名は、0.gif, 1.gif, 〜, 9.gifとする。パーミッションを 644 にする。

    (telnetの場合)
    % cd img
    % chmod 644 *.gif

  9. ブラウザからSDnoteH**.cgiにアクセスする。
       → [no counter data]と表示されたらインストール完了。
CGIプログラムの拡張子に「pl」など別のものを指定されているサーバでは、拡張子をそれに合わせて変更して下さい。(SDcountH**.cgi を SDcountH**.pl に変更する。)

[index]

■ カウンタを設置する

  1. 新しいカウンタの名前を決める。例えば index とする。複数のカウンタを使用する場合は重複しないように名前をつけてください。

    *使用できる文字は英数字のみです。他の記号は使えません。

  2. カウントデータを保存するための index.txt という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir="./";の場合は SDcountH**.cgi と同じディレクトリ)におく。パーミッションを 666 に設定する。

     (telnetの場合)
    % touch index.txt
    % chmod 666 index.txt.

  3. ログをとる場合には、ログデータを保存するための index.log という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir="./";の場合は SDcountH**.cgi と同じディレクトリ)におく。パーミッションを 666 に設定する。

    *すでに機能しているログをとっていないカウンタで、新たにログをとりたいときには、必ずログファイルを作成してください。

     (telnetの場合)
    % touch index.log
    % chmod 666 index.log.

  4. HTMLファイル中のカウンタを表示させたい場所に次のようにイメージタグを入れる。

    <IMG SRC="http://〜/SDcountH**.cgi?index&1 WIDTH=80 HEIGHT=20">

    ※ 上記は一例です。URLは相対パス(../SDcountH**.cgi等)でも絶対パス(http://〜/SDcountH**.cgi)でも構いません。
    ※ WIDTHには (gifファイルの横幅)×桁数(標準では5桁)、HEIGHT には gifファイルの縦幅を書いて下さい。WIDTHとHEIGHTは省略できますが、書いておくとブラウザでの処理が多少速くなりますので、書くことをおすすめします。

  5. 昨日のカウント数を表示させたいときは、HTMLファイル中の表示させたい場所に次のようにイメージタグを入れる。

    <IMG SRC="http://〜/SDcountH**.cgi?index&&yesterday&3 WIDTH=80 HEIGHT=20">

    ※ ここでは桁数を3桁としています。下も同様。

  6. 今日のカウント数を表示させたいときは、HTMLファイル中の表示させたい場所に次のようにイメージタグを入れる。

    <IMG SRC="http://〜/SDcountH**.cgi?index&&today&3 WIDTH=80 HEIGHT=20">

  7. HTMLファイルをサーバーにFTPしてみて、表示されるかどうか確かめる。リロードしたら数字が増えるかも確認する。
 以上で完了です。カウンタをさらに追加するには、1.からの操作を繰り返してください。使い方の詳細は以下をごらんください。

[index]

使い方

● パラメータ

このカウンタでは、CGIファイルのURLの後ろにパラメータをつけてカウンタを操作します。
パラメータは以下のように指定します。

<IMG SRC="SDcountH**.cgi?(1)&(2)&(3)&(4)&(5)&(6)&(7)&(8)>

Ver.1.00
Ver.2.02共通 Ver.2.02のみ ※ 途中のパラメータを書かない場合は、"SDcountH.cgi?index&&&&today" とのように、 & を続けて書いて下さい。

※ パラメータの使用法の詳細は以下の説明と見本を参照してください。

[index]

● 全体、昨日、今日のカウンタ表示

パラメータ(2):
カウント数を1増やすときは 1 と書く。
カウントを増やさないときは何も書かない。

パラメータ(3):

全体のカウント数を表示させたいときは何もかかない。
昨日のカウント数を表示させたいときは yesterday と書く。
今日のカウント数を表示させたいときは today と書く。

<IMG SRC="SDcountH**.cgi?index&1 WIDTH=80 HEIGHT=20">  全体のカウント、カウント数増加

<IMG SRC="SDcountH**.cgi?index&&yesterday WIDTH=80 HEIGHT=20">  昨日のカウント

<IMG SRC="SDcountH**.cgi?index&&today WIDTH=80 HEIGHT=20">  今日のカウント

※ 全体と今日の二箇所、全体、昨日、今日の三箇所というようにカウンタを複数表示させる場合には、1個所だけパラメータ(2)1にしておき、残りは何も書かないようにします。

 [index]

● カウントの桁数を変更する

パラメータ(4):
表示させたい桁数を書く。省略すると5桁になる。
桁数を特に指定せず、自動的にカウント数の桁で表示させたいときには0と書く。

<IMG SRC="SDcountH**.cgi?index&&today&3 WIDTH=48 HEIGHT=20">  今日のカウント数を3桁で表示

※ 桁数を変更したら、それに合わせて WIDTH も変更してください。そうしないと、横長だったり縦長だったりと変な画像になります。
※ 指定した桁数よりカウント数の桁数が多い場合はカウント数の桁で表示されます。(例えば、指定した桁数が3 でカウント数が 1234 である場合は、4桁で表示されます。)

 [index]

● カウンタの画像を変更する

パラメータ(5):
gif形式の 0.gif, 1.gif, 〜, 9.gif というファイルが置いてあるディレクトリ名を指定する。
省略すると、デフォルトで ./image/default が自動的に指定される。

<IMG SRC="SDcountH**.cgi?index&&&&./img/mygif WIDTH=80 HEIGHT=20">  
ディレクトリ ./img/mygif を相対パスで指定

<IMG SRC="SDcountH**.cgi?index&&&&~username/image/counter WIDTH=80 HEIGHT=20">  
ディレクトリ ~username/image/counter を絶対パスで指定

※ ディレクトリ名は SDcountH**.cgi の置いてあるディレクトリを基準に相対パスで指定するか、または、絶対パスで指定します。先頭の ./SDcountH**.cgi の置いてあるディレクトリ(子ディレクトリ)を表しています。 ./ は必ずしも指定する必要はありませんが、UNIXでは ./ がないと認識されないことがあるので、もし、省略してカウンタ画像が表示されない場合には、 ./ を先頭につけてください。

※ 画像ファイルを置くディレクトリはどこでもかまいませんが、とりあえず、インストール時に作成したディレクトリ img の下に置く方法を以下に書いておきます。
  1. ディレクトリ img の下に、新しくディレクトリ mygif を作る。パーミッションを755にする。

    %cd img
    %mkdir mygif
    %chmod 755 mygif

  2. ディレクトリ mygif に移動しこのディレクトリ中に、gif画像ファイルをFTPでバイナリ転送する。画像のファイル名は、0.gif, 1.gif, 〜, 9.gifとする。パーミッションを 644 にする。

    (telnetの場合)
    % cd img
    % chmod 644 *.gif
[index]

● リロードをカウントしないようにする


パラメータ(6):
リロードしてもカウントしないようにするためには1と書く。
リロードもカウントする場合には何も書かない。

<IMG SRC="SDcountH**.cgi?index&&&&&1 WIDTH=80 HEIGHT=20">  リロードをカウントしない

※ アクセスしたユーザーのIPアドレスを記録し、同じユーザーかどうか調べる方式です。ほぼ同じタイミングで複数の人がアクセスするとリロードがカウントされてしまうおそれがありますので、アクセス数の非常に多いサイトには向きません。

[index

● ログをとるかどうか指定する (Ver.2.00以降のみ)

パラメータ(7):
ログをとる場合には1と書く。
ログをとらない場合には0と書く。
何も書かないと、SDcountH**.cgi の中の変数 $takelog に指定された値が使用される。

<IMG SRC="SDcountH**.cgi?index&&&&&&1 WIDTH=80 HEIGHT=20">  リロードをカウントしない

SDcountH**.cgi の中の変数 $takelog が1と0のどちらに指定されていても、ここで指定した値が優先されます。ここで指定しないと、変数 $takelog の値が有効になります。
※ この指定はパラメータ(2)1にしてカウント数を増やすことにしているときのみ有効です。(カウント数が増えなければログもとらないからです。)

[index]

● クッキーを使用するかどうか指定する (Ver.2.00以降のみ)

パラメータ(8):
クッキーを使用する場合には1と書く。
クッキーを使用しない場合には何も書かない。

<IMG SRC="SDcountH**.cgi?index&1&your&&&&&1 WIDTH=80 HEIGHT=20">  
クッキーによるユーザー別のカウント数を表示

※ クッキーを使用して、ユーザー別のカウント数をとることができます。ユーザー別のカウンタを表示させる場合には、パラメータ(3)yourにします。
※ クッキーとはユーザーの各ブラウザに記憶される情報なので、ユーザーが違うブラウザを使用すると値は変わってしまいます。また、ユーザーがクッキーの設定を無効にしていると使用できません

※ クッキーを使用しなくても、ホスト別のアクセスログをとっていれば、ログを解析してホスト別のアクセス数を表示させることができます。この場合はただ、パラメータ(3)yourにするだけです。

<IMG SRC="SDcountH**.cgi?index&1&your WIDTH=80 HEIGHT=20">  
ログを解析しホスト別のカウント数を表示

[index]

ログ (Ver2.00以降のみ)

● ログ表示

  1. ログは(カウンタ名).logというファイルに格納されます。これはカウンタの設置の3番目で作成します。これを SDcountlog.cgi で見ます。このファイルはインストールの5番目でインストールしているはずです。

    ※ とるログの種類はインストールの3番目での設定(SDcountH**.cgi の変数の設定)によって決まります。
    以下の種類があるので、指示に従って設定してください。
  2. SDcountlog.cgi最上部のPerlのパスを正しく設定する。

    (例) #!/usr/local/bin/perl

    ※ PerlのパスはUNIXの種類やサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。

  3. SDcountlog.cgi の上部にある「変数設定」部分を編集する。


    ※注1 ログファイルをプログラムと同じ場所に置く場合は $basedir=".";のまま。

    ※注2 ここにパスワードを書いておいて、SDcountlog.cgi にアクセスすると、パスワード入力フォームが表示され、他人にログを見られないようにできます。何もかかないとパスワードなしで誰でも見られるようになります。

    ※注3 ホスト別、ドメイン別のログをアクセス回数順に並び替えて表示すると、見やすくはなりますが、ログの数が多いと並び替えに時間がかかるので気になる場合は0にしてください。
     ばらばらのログデータをいつも並びかえて表示するのは時間がかかるので、$showsort を1にすると、並びかえてログファイル内に書き込むことのできるボタンが現れます。

    ※注4 "post" が使えないところでは "get" に変えてください

  4. SDcountlog.cgi にアクセスする。
     → パスワードを書いてあれば、パスワード入力画面が表示される。そうでなければ6.へ。

  5. $validpass に設定したのと同じパスワードを入力して送信する。

  6. パスワードが正しければログ選択画面が表示される。

  7. カウンタ名のフォームにログを表示させたいカウンタ名を書き、表示させるログの種類を選択する。以下の種類があります。

  8. $usesort を1に設定していれば、ホスト別、ドメイン別のログはアクセス回数順に並び替えて表示される。また、$showsort を1に設定していれば、ファイル中のホスト別のログを並びかえるためのボタンが表示される。

  9. 続けて見たいカウンタログがあれば、カウンタ名を入力して見る。
[index]

● ログファイルの形式

 ログファイルの中には以下の種類のログのリストがあり、それぞれのログのリストは「---nextlog---」 という識別子によって区切られています。 (ログファイルの例)
197,2000-1-15 10:32:11,192.168.0.0,sentora.dori.co.jp
196,2000-1-15 09:45:34,192.168.0.1,guru.meri.co.jp
195,2000-1-15 08:10:09,1.2.3.4,yeah.bye.com
---nextlog---
2001-1-15,22
2001-1-14,7
2001-1-13,15
2001-1-12,20
---nextlog---
192.168.0.0,sentora.dori.co.jp,5
192.168.0.1,guru.meri.co.jp,8
1.2.3.4,yeah.bye.com,2

※ ホスト別のログは初めてきたホストの順に記録されていきます。記録する時点でアクセス順に並び替えを行えばログ表示時は楽なのですが、ログの数が多くなってくると、並び替えに時間がかかり、カウンタへのアクセス時間が長くなってしまうので、あえてここでは並び替えを行っていません。
 並び替えたデータにしたい場合は SDcountlog.cgi でホスト別のログを表示させたときに現れるボタンを押してください。(ただし、$showsort を1に設定していること。)

※ ログデータはほうっておくとどんどん大きくなっていくので、区切りのいいところを見つけて、削除するなり他のファイルにカット&ペーストするなりしてください。

※ ドメイン名は取得できないこともあります。(環境変数に入っていない場合でも、IPアドレスから取得を試みていますが、それでもプロキシを通していると取得できないものもあります。)

[index]

その他

● カウント値を変更する

 (カウンタ名).txt ファイルの中には次のデータが順番に入っています。 (txtファイルの例)
332
17
12
2001-1-15
192.168.0.0

 各カウンタのtxtファイルの上3行を変更すればカウント値を変更できます。

※ IPアドレスは、同じユーザーかどうか確かめ、リロードのカウントを防ぐためのものです。

[index]

● 隠しカウンタを作る

 アクセス数をカウントしたいけれど、画像は表示したくないという場合、非常に小さい透過または背景色のgif画像を表示して、訪問者からはあたかもカウンタがないように見せかける方法があります。
 このようなカウンタを隠しカウンタとよびます。
 画像の転送の仕方やパーミッションは通常の画像とすべて同じですが、0.gif, 1.gif, 〜, 9.gifのすべてを非常に小さな同じ画像にしておきます。

イメージタグ指定例

<IMG SRC="SDcountH**.cgi?index&1&&&img/hidden WIDTH=1 HEIGHT=1">

隠しカウンタ用透過gif画像サンプル ※ ソースにイメージタグが表示されるので、ソースを見られればばれてしまいます。

※ CGIを用いた他の方法やSSI, JavaScriptを用いる方法もあります。

[index]

■ Q&A

Q1: カウンタが表示されない。 Q2: アクセスしてもカウンタ値が増えない。
Q3: ログがとれない。
その他

 CGIを使用できる環境にありますか。(プログラムを置くディレクトリ、プログラムの拡張子など。)

※ 本体プログラムをCGIの使用できる場所に正しく置き、本説明書どおりに使用しても問題がおこる場合は、掲示板に書き込むか道里千虎あてにメールをください。

[index]

■ 更新履歴