カウンター設置法

とほほのWWW入門 > カウンター設置法
2000年6月4日版
現在の wwwcount.cgi の最新バージョンは Ver3.07 です。
現在の gifcat.pl の最新バージョンは Ver1.55 です。

目次

カウンターを取り付けるには(一般論)

ホームページを公開したら、次に、自分のホームページに何人の人が訪れているのか知りたいですよね。それを実現するのが「カウンター」です。カウンターを設置する方法はいくつかありますので、それを紹介します。

(1)プロバイダがサポートするカウンターを利用する: BEKKOAMEなど、プロバイダがカウンターをサポートしている場合は、これを利用するのが手っ取り早いようです。入会しているプロバイダがカウンターサービスを提供していないか、チェックしてみてください。私の加入しているBIGLOBEでもカウンターサービスを開始したようです。

(2)パブリックカウンターを利用する: 有料、無料などいろいろありますが、以下のようなパブリックカウンターサービス、および、その紹介があります。

(3)SSIを用いる: CGIに比べてSSIは簡単ですが、SSIをサポートしていないプロバイダも多いようです。後述の設定方法を参照してください。

(4)CGIを用いる: SSIよりちょっと難しくなりますが、SSIをサポートしていないプロバイダでも使用できます。後述の設定方法を参照してください。

(5)もっと格好よいものを用意する: サーバー上でプログラムをコンパイルできる人は、次のようなカウンタープログラムを使用してみるのもよいでしょう。

とほほカウンターとは?

以下では、CGIもしくはSSIを用いたカウンターの設置方法について説明します。とほほカウンターは以下のような特徴をもっています。

(1)CGIモード/SSIモード:多くのカウンターはSSIでの設置しかサポートしていなかったりしますが、とほほカウンターは、SSIモード、CGIモード両方をサポートします。

(2)OSに依存しないグラフィックカウンタ:グラフィックカウンタの大半は、OSに依存したコマンドのコンパイルなどの作業が必要でしたが、とほほカウンターはperlによる画像連結をサポートしていますので、OSに依存しません。

(3)レポート機能:毎日、訪問者に関する情報(1日のカウント数、訪問者のアドレスなど)を電子メールで通知する機能をサポートしています。

(4)リンク元発見機能:自分のホームページがどこからリンクされているのか発見してレポートする機能をサポートしています。

(5)隠しカウンタ機能:画面上のとある画像に、こっそりカウンターを仕込むことができます。訪問者にカウント数は見えませんが、カウント数だけは記録できるようになります。

設置イメージは、トップページをご参照ください。

とほほカウンターの履歴

wwwcount.cgi

gifcat.pl

とほほカウンターの注意事項

(1)基本的にはフリーソフトです。使用承諾や改造・再配布などに関しては「ご使用上の注意」を参照してください。

(2)サーバーがいきなりダウンした場合など、ロックファイルが残ってしまうことがあるという報告をいただいています。変だな?と思ったら、lock ディレクトリの中に wwwcount.loc というディレクトリが無いか見て、あれば削除してください。

(3)BIGLOBEの www2s というサーバーでは、OSの制限のためか、ロック機能がうまく機能しないことがあるようです。

(4)カウンターをGIFで表示する場合、Internet Explorer 2.0など、GIFアニメに対応していないブラウザでは正常に表示されないことが判明しました。(1桁目だけが表示される) 下記の「IE2.0で正常に表示されない問題の回避」を参照してください。(1997.8.17追記)

(5)カウンタ用画像データが透過GIFの場合、最上位の桁に横線がはいってしまうことがあります。正確な原因は調査中ですが、GIF画像がインタレースや透過GIFの場合に、横線がはいるようだとの情報をいただきました。お絵描きソフトでインタレースを解除してから設置してみてください。(1999.4.4追記)

CGIカウンター設置方法

(1)まず、サーバーがCGIをサポートしていることを確認してください。.htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってCGIを使用できる状態にしてください。例えばRIMNETの場合は、cgi-binディレクトリ(フォルダ)の下に、次の内容のファイル(.htaccess)を設置します。
    AddType application/x-httpd-cgi .cgi

(2)WWWサーバー上に次のファイルを用意してください。それぞれのファイルの内容については以下で述べます。

(3)サーバーにファイルを設置する場合、wwwcount.cgi および gifcat.pl ファイルのみは、改行コードをサーバーのOSに適したものになるように設置してください。詳細は「改行コードについて」を参照してください。

(4)0.gif〜9.gifには0〜9までの数字のイメージをGIFファイルで用意してください。大きささえ揃っていればほとんどのGIFファイルを使用可能だと思いますが、GIFアニメーションを使用したものなど、サポートできないファイルも有ります。「むふふの素材集」に含まれているものを使用するのが無難は無難。

(5)index.htmlは、cgi-binディレクトリの中にどんなファイルがあるのか知られないようにするためのファイルです。中身はなんでも構いません。

(6)gifcat.plはgifcat.txtを表示した後、gifcat.pl という名前で保存したものを使用してください。これは複数のGIFファイルを連結するperlライブラリです。

(7)wwwcount.cgiはwwwcount.txtを表示した後、wwwcount.cgiという名前で保存したものを使用してください。これがカウンターのプログラム本体になります。FTPでファイルを転送する際は、必ずテキストモード(ASCIIモード)で転送するようにしてください。

(8)wwwcount.cnt, wwwcount.dat, wwwcount.accは中身空のファイルを作成してください。カウンタの初期値を指定したい場合は、wwwcount.cntの内容として半角数値で初期値を記述してください。

(9)cgi-binの下にlockというディレクトリを作成してください。テストを行っていると、このディレクトリの下にwwwcount.locというディレクトリが作成されたまま残ってしまうことがあります。その際はwwwcount.locディレクトリを削除してから再度テストしてください。

(10)それぞれのファイルに対して、サーバーがUNIXの場合はパーミッションを、サーバーがWindows NTの場合は「IUSER_マシン名」というユーザーに対する権限を、次のように指定してください。(参考: パーミッションの変え方)

ファイル名
ディレクトリ名
パーミッション
UNIXの場合
権限
Windows NTの場合
gifcat.pl644読み込み権
wwwcount.cgi755読み込み権
wwwcount.cnt666読み込み&書き込み権
wwwcount.dat666読み込み&書き込み権
wwwcount.acc666読み込み&書き込み権
lock777読み込み権

(11)カウンターを表示したいHTML文書(たとえば index.html)に以下の記述を追加してください。ブラウザからこのファイルを開くとカウンターが表示されるはずです。

    <IMG SRC="cgi-bin/wwwcount.cgi?gif">

注意点をいくつか述べます。 このページの末尾にある「動作確認プロバイダ」の項も参照ください。

カウンター用の画像は下記のサイトに数多くあります。

SSIカウンター設置方法

(1)まず、サーバーがSSIをサポートしていることを確認してください。.htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってSSIを使用できる状態にしてください。例えば、RIMNETの場合、以下の内容の .htaccess という名前のファイルを、wwwcount.htmlと同じディレクトリ(フォルダ)に設置します。
    AddType text/x-server-parsed-html .html

(2)サーバー上に次のファイルを用意してください。

(3)サーバーにファイルを設置する場合、wwwcount.cgiファイルのみは、改行コードをサーバーのOSに適したものになるように設置してください。詳細は「改行コードについて」を参照してください。

(4)wwwcount.htmlの内容は次のようにしてください。他のサーバーに設置したCGIを http://〜 で呼び出すことはできません。また、上のフォルダを示す .. も使用できない場合があります。(→ 「とほほのSSI入門」)

    <HTML>
    <HEAD><TITLE>SSI Counter</TITLE></HEAD>
    <BODY>
    あなたは
    <!--#exec cgi="cgi-bin/wwwcount.cgi"-->
    人目のお客様です。
    </BODY>
    </HTML>

(5)index.htmlは、cgi-binの下にどんなスクリプトが置いてあるのか知られないためのセキュリティ改善です。 中身はなんでもよいので、とにかく置くようにしましょう。

(6)wwwcount.cgiはwwwcount.txtを表示した後、wwwcount.cgiという名前で保存したものを使用してください。Windowsで保存時にwwwcount.cgi.txtになってしまう場合は、"wwwcount.cgi"のようにダブルクォートで囲って保存してください)

(7)wwwcount.cgi の1行目を、プロバイダの環境に合わせて適切に変更してください。サーバーがWindows系の場合は、この処理は不要です。

(8)wwwcount.cgi の $mode = ""; という行を、$mode = "text"; に書き換えてください。

(9)wwwcount.cnt, wwwcount.dat, wwwcount.accは、中身空のファイルを作成してください。カウンタの初期値を指定したい場合は、wwwcount.cntの内容として半角数値で初期値を記述してください。

(10)cgi-binの下にlockというディレクトリを作成(mkdir)してください。テストを行っていると、このディレクトリの下にwwwcount.locというディレクトリが作成されたまま残ってしまうことがあります。その際はwwwcount.locディレクトリを削除(rmdir)してから再度テストしてください。

(11)それぞれのファイルに対して、サーバーがUNIXの場合はパーミッションを、サーバーがWindows NTの場合は「IUSER_マシン名」というユーザーに対する権限を、次のように指定してください。(参考: パーミッションの変え方)

ファイル名
ディレクトリ名
パーミッション
UNIXの場合
権限
Windows NTの場合
wwwcount.html644読み込み権
wwwcount.cgi755読み込み権
wwwcount.cnt666読み込み&書き込み権
wwwcount.dat666読み込み&書き込み権
wwwcount.acc666読み込み&書き込み権
lock777読み込み権

(12)ブラウザからWWWサーバー上のファイルwwwcount.htmlを開いて見てください。設置が成功していればカウンタが表示されるはずです。

表示桁数の変更

wwwcount.cgiの中の「$figure = 5;」という行の 5 を 6 に変更すれば、表示を6桁で表示できるようになります。

カウンターを複数設置する

カウンターにnameオプションを指定すると、カウンターデータをnameオプションで指定したファイルに記録するようになります。つまり、nameオプションで指定するファイル名を変更することにより、まったく独立した複数のカウンターを設置することができます。

nameオプションは、wwwcount.cgiを呼び出す際に、CGIの場合は「+name+カウンターファイル名」、SSIの場合は「 name カウンターファイル名」を追記してください。例えば、

    <IMG SRC="wwwcount.cgi?gif">
    <!--#exec cgi="/○○/wwwcount.cgi"-->
などと呼び出している場合は、下記のように呼び出してやることで、カウンターデータファイルを変更することができます。
    <IMG SRC="wwwcount.cgi?gif+name+wwwcount2">
    <!--#exec cgi="/○○/wwwcount.cgi name wwwcount2"-->

この際、以下のファイルを作成しておいてください。

    http://〜/〜/cgi-bin/wwwcount2.cnt
    http://〜/〜/cgi-bin/wwwcount2.dat
    http://〜/〜/cgi-bin/wwwcount2.acc
wwwcount2 を wwwcount3 としていけば、3個目、4個目のカウンターを設置可能です。(wwwcount? でなくても、半角英数字(記号は不可)であればどんな名前でも構いません。

レポート送信機能

wwwcount.cgiの中の、「$mailto = '';」の箇所を、「$mailto = 'abc@xxx.yyy.zzz';」のように書き換えると、その日の最初のアクセスがあった時点で、前日までのアクセスログが自分宛にメール送信されてくるようになります。この際は、/usr/lib/sendmail というコマンドがWWWサーバー上に存在する事を確認してください。

メールアドレスはシングルクォート( ' )で囲んでください。 使用しているperlのバージョンが5.0以上の場合、ダブルクォーテーション( " )の中でアットマーク( @ )を使用するとエラーになるそうです。

/usr/lib/sendmailが存在しない場合は、/bin/mailxでも大丈夫かもしれません。(未確認)

アクセスログの HOST = [ ... ] の部分には www2e.biglobe.ne.jp などのようなアクセス元のホスト名が記録されるのですが、プロバイダによってはIPアドレスの情報しか得られないところもあるようです。

隠しカウンタ機能

例えば、トップページを経由しないで訪問する閲覧者のために、wwwcount.cgi の gif オプションの代わりに、「hide+GIFファイル名」を指定してやると、そのページに直接アクセスされた場合でもカウントされるようになります。(このページの最後にも実は、1×1の隠しカウンタを設置しています。)
    <IMG SRC="cgi-bin/wwwcount.cgi?hide+xxx.gif">

xxx.gifには、cgi-binディレクトリに存在するGIFファイル名を指定してください。隣のディレクトリ(image)に存在するファイルを hide+../image/xxx.gif のように指定しても構いません。ファイル名は必ず .gif という拡張子を持つファイルにしてください。

隠しカウンタのカウント数は、同じwwwcount.cntファイルを共有する通常カウンタの数値や、レポート機能で確認することができます。

同一アドレスチェック機能

wwwcount.cgi 同じ人が再表示を行う度にカウントアップされてしまう問題を解決するために、同じ日に同じIPアドレスからのアクセスはカウントアップしないようにすることができます。 wwwcount.cgi の「$do_address_check = 0;」という行を「$do_address_check = 1;」と変更してください。

リンク元発見機能

CGIカウンターにおいて、
    <IMG SRC="cgi-bin/wwwcount.cgi?gif">
の代わりに次のように記述すると、JavaScriptをサポートしたブラウザにおいて、自分のホームページがどこからリンクされているのか発見することができます。
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    xx = escape(document.referrer);
    yy = "";
    for (i = 0; i < xx.length; i++) {
        zz = xx.charAt(i);
        yy += (zz == "+") ? "%2B" : zz;
    }
    document.write('<IMG WIDTH=80 HEIGHT=19 ');
    document.write('SRC="cgi-bin/wwwcount.cgi');
    document.write('?gif+ref+', yy, '">');
    // --> <IMG WIDTH=80 HEIGHT=19 SRC="cgi-bin/wwwcount.cgi?gif">
    </SCRIPT>
発見した情報は wwwcount.acc ファイルに FROM 項目として蓄積されますので、レポート送信機能で送信するようにしてください。

ただし、JavaScriptをサポートしたブラウザが、JavaScriptをオフにして参照した場合、カウントアップされないという制限が発生しますのでご注意ください。また、ブラウザによっては、リンク元の情報を送ってこなかったり、嘘のリンク元情報を送ってくるものがあります。この場合は正確なリンク元は取得できませんので、ご了承ください。

(% や + を含むURLからジャンプしてきた場合に、カウンターが正常に動作しない障害を修正しました。(1998.4.5))

IE2.0で正常に表示されない問題の回避

このカウンターで用いているGIFファイル連結は、GIF89aの機能(GIFアニメなど)を用いていますので、Internet Explorer 2.0など、GIFアニメに対応していないブラウザでは正常に表示されません。(1桁目だけが表示される) 正常に表示させるようにはできないのですが、以下のようにして、カウンター自体を表示させないようにすることは可能です。
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    document.write('<IMG WIDTH=80 HEIGHT=19 ');
    document.write('SRC="cgi-bin/wwwcount.cgi?gif');
    // -->
    </SCRIPT>

Windows NTのIISでの設置方法

とほほカウンターをWindows NT 4.0 + IIS3.0で動作させるには、以下の点にご注意ください。

(1)Windows NTでのCGIについて」を参照して、Windows NT上でperlによるCGIが動作するための準備を行ってください。perlの入手とインストール、.cgi拡張子のためのレジストリの設定が必要です。

(2)CGI実行時のカレントディレクトリ(実行フォルダ)が、wwwcount.cgiを設置したディレクトリと異なる場合があるようです。その場合は、wwwcount.cgiの2行目あたりに、「chdir("C:\\HomePage\\cgi-bin");」のように、wwwcount.cgiを設置したディレクトリに移動するコマンドを追記してみてください。バックスラッシュ(\)は2つづつ記述してください。

(3)Windows NTやIISの環境によっては、wwwcount.cgi?gif の gif などの引数を $ARGV で受け取れないケースもあるそうです。うまくいかない場合は、wwwcount.cgi の処理部の最初の方に、$ARGV[0] = "gif"; の1行を加えて、<A HREF="〜/wwwcount.cgi"> として呼び出してみてください。

動かないときは

カウンターがうまく動かない時は以下の手順に従って調べて見てください。

(1)CGIの練習:とほほのCGI入門」の「CGIの設置方法」に従って、簡単なCGIが動作するかどうか確認してください。

(2)テスト1:ブラウザの[ファイル]→[(場所を指定して)開く]から、「http://〜/〜/wwwcount.cgi?test」と入力して、開いてください。「〜」の部分には適切なサーバー名やディレクトリ名を指定してください。CGIスクリプトが上手く動作していれば「OK. You can use CGI script.」と表示されます。また、何か不備がある場合は、「NG. 不備の原因」も表示されます。このテストが失敗する原因として以下のことが考えられます。

(3)テスト2:テスト1がうまく動く場合は、同様に[ファイル]→[(場所を指定して)開く]から「http://〜/wwwcount.cgi?text」を入力して、カウンター数値が表示されるか調べてください。これがうまくいかない原因としては以下のことが考えられます。

(4)テスト3:テスト2がうまく動く場合は、同様に「http://〜/wwwcount.cgi?gif」を入力して、GIFイメージのカウンター数値が表示されるか調べてください。これがうまくいかない原因としては以下のことが考えられます。

その外、再表示をちゃんと行っているか、画像の読み込みモードはオンになっているかなど、「CGIスクリプト作成時の注意」を参照してください。それでもうまく動かないときは、質問メールを受け付けています。上記のテスト結果など詳しい状況を追記の上、「とほほへメールを送る」を参照して送付ください。

動作確認プロバイダ

動作確認のとれたプロバイダを紹介します。

上記の他のプロバイダでもCGIさえ使えれば大抵の場合動作可能と思います。(動作確認プロバイダの追加は締め切らせていただきました)


Copyright (C) 1996-2000 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwcount.htm