カウンター設置法

HOME > とほほのWWW入門 > カウンター設置法
1998年8月23日版
■ 現在の wwwcount.cgi の最新バージョンは Ver2.60 です。
■ 透過GIFに対応しました。gifcat.pl を Ver1.50 にバージョンアップしてください。

目次


カウンターを取り付けるには

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

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

Web裏技
K&Bパブリックカウンタサービス
Kouji-Net
Future Spirits
Sanki-Net レンタルWWWカウンタ
M's Worldのジジジ・カウンター
Lemon Page 無料アクセスカウンタ
Web-Counter (参照: 日本語説明書)
淡路島和直のHOMEPAGE

下記のページでは100を超えるパブリックカウンタリストが紹介されています。すごい!!

Public Counterのサービス

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

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

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

WWW Homepage Access Counter and Clock
npc.cgi


注意事項

このページで紹介するカウンターに関する注意事項です。

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

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

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

公私を問わず、スクリプトの利用・改造は自由に行ってください。 gifcat.plを第3者に再配布する場合は必ず目立つところに出典(私のURLとメールアドレス)を明記してください。(1997.9.28追記)


SSIカウンター設置方法

まず、サーバーがSSIをサポートしていることを確認してください。 .htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってSSIを使用できる状態にしてください。

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

wwwcount.htmlの内容は次のようにしてください。 「〜」の箇所は「/home/users/tohoho」のような、スラッシュ( / )で始まるルートディレクトリからの絶対パス名を記述してください。 (→参照「UNIX編」)
    <HTML>
    <HEAD><TITLE>SSI Counter</TITLE></HEAD>
    <BODY>
    あなたは
    <!--#exec cgi="/〜/cgi-bin/wwwcount.cgi?text"-->
    人目のお客様です。
    </BODY>
    </HTML>

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

wwwcount.cgiはwwwcount.txtを表示した後、wwwcount.cgiという名前で保存したものを使用してください。 (Windowsで保存時にwwwcount.cgi.txtになってしまう場合は、"wwwcount.cgi"のようにダブルクォートで囲って保存してください) FTPでファイルを転送する際は、必ずテキストモード(ASCIIモード)で転送するようにしてください。

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

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

それぞれのファイルのパーミッション改行コードを次のようにしてください。

ファイル名パーミッション改行コード
wwwcount.html644何でもよい
wwwcount.cgi755UNIX形式
wwwcount.cnt666何でもよい
wwwcount.dat666何でもよい
wwwcount.acc666何でもよい
lock777ディレクトリなので関係なし

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


CGIカウンター設置方法

まず、サーバーがCGIをサポートしていることを確認してください。 .htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってCGIを使用できる状態にしてください。

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

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

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

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

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

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

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

それぞれのファイルのパーミッション改行コードを次のようにしてください。

ファイル名パーミッション改行コード
gifcat.pl644UNIX形式
wwwcount.cgi755UNIX形式
wwwcount.cnt666何でもよい
wwwcount.dat666何でもよい
wwwcount.acc666何でもよい
lock777ディレクトリなので関係なし

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

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

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

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

表示桁数の変更

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

レポート送信機能

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

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

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

nkfが存在しない時は、ftp://ftp.lab.kdd.co.jp/Japan/nkf/ あたりから入手するか、日本語を使用したURLが少々文字化けしてもよいなら、open(OUT, "| $nkf -j | $sendmail $mailto"); を open(OUT, "| $sendmail $mailto"); に修正してnkfを使わないようにしても構いません。

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


隠しカウンタ機能

トップページを経由しないで訪問する閲覧者のために、非トップページに下記のような記述をしておくと、そのページに直接アクセスされた場合でもカウントされるようになります。
    <IMG SRC="cgi-bin/wwwcount.cgi?hide+xxx.gif">
このページの最後にも実は、1×1の隠しカウンタを設置しています。

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


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

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>

動かないときは

カウンターがうまく動かない時は以下の手順に従って調べて見てください。
テスト1
ブラウザの[ファイル]→[(場所を指定して)開く]から、wwwcount.cgi の URL(http://〜/wwwcount.cgi)を直接入力して開いてください。 CGIスクリプトが上手く動作していれば「OK. You can use CGI script.」と表示されます。 また、何か不備がある場合は、「NG. 不備の原因」も表示されます。 このテストが失敗する原因は・・・・
  • サーバーがCGIをサポートしていない。
  • 1行目の#!の前に空白文字や空行がある。
  • 1行目のperlのパス名が適切でない。
  • wwwcount.cgiをテキストモードで送信していない。
  • wwwcount.cgiのパーミッションが755でない。
  • .htaccessが設置されていない。(プロバイダにより必要)
・・・などですが、少なくともこのテスト1が正常に動作するまでは、「CGIスクリプト作成時の注意」を読んだり、プロバイダに問い合わせるなどして解決してください。

テスト2
1.がうまく動く場合は、同様に[ファイル]→[(場所を指定して)開く]から「http://〜/wwwcount.cgi?text」を入力して、カウンター数値が表示されるか調べてください。 これがうまくいかない原因は・・・
  • lockディレクトリの中にwwwcount.locディレクトリが残ってしまっている。
  • wwwcount.dat, wwwcount.cnt ファイルのバーミッションが666でない。

テスト3
2.がうまく動く場合は、同様に「http://〜/wwwcount.cgi?gif」を入力して、GIFイメージのカウンター数値が表示されるか調べてください。 これがうまくいかない原因は・・・
  • 0.gif〜9.gifがwwwcount.cgiと同じディレクトリに存在しない。
  • 0.gif〜9.gifのファイル名が誤っている。(大文字・小文字など)
  • 0.gif〜9.gifの内容が大きすぎる。
  • gifcat.plがテキストモードで転送されていない。

その外、再表示をちゃんと行っているか、画像の読み込みモードはオンになっているかなど、「CGIスクリプト作成時の注意」を参照してください。

それでもうまく動かないときは、上記のテスト結果など詳しい状況を追記の上、「とほほへの質問」をお願いします。


動作確認プロバイダ

また、プロバイダという訳ではないのですが、須磨人・井口さんからWindows NT + IIS での動作確認をいただきました。 wwwcount.cgi を wwwcount.pl に変更するか、IISのヘルプに従って、レジストリを書き換えるとよいそうです。 詳細は http://www02.so-net.ne.jp/~iguchi/counter/ にジャンプ!!

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


Copyright(C) とほほ ( http://www2e.biglobe.ne.jp/~s-hasei/ )