■ 現在の 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を超えるパブリックカウンタリストが紹介されています。すごい!!
- SSIを用いる
- CGIに比べてSSIは簡単ですが、SSIをサポートしていないプロバイダも多いようです。 後述の設定方法を参照してください。
- CGIを用いる
- SSIよりちょっと難しくなりますが、SSIをサポートしていないプロバイダでも使用できます。 後述の設定方法を参照してください。
- もっと格好よいものを用意する
- サーバー上でプログラムをコンパイルできる人は、次のようなカウンタープログラムを使用してみるのもよいでしょう。
このページで紹介するカウンターに関する注意事項です。サーバーがいきなりダウンした場合など、ロックファイルが残ってしまうことがあるという報告をいただいています。 変だな?と思ったら、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をサポートしていることを確認してください。 .htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってSSIを使用できる状態にしてください。サーバー上に次のファイルを用意してください。
wwwcount.htmlの内容は次のようにしてください。 「〜」の箇所は「/home/users/tohoho」のような、スラッシュ( / )で始まるルートディレクトリからの絶対パス名を記述してください。 (→参照「UNIX編」)
- http://サーバー/ディレクトリ/wwwcount.html
- http://サーバー/ディレクトリ/cgi-bin/index.html
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.cgi
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.cnt
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.dat
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.acc
- http://サーバー/ディレクトリ/cgi-bin/lock/
<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.html 644 何でもよい wwwcount.cgi 755 UNIX形式 wwwcount.cnt 666 何でもよい wwwcount.dat 666 何でもよい wwwcount.acc 666 何でもよい lock 777 ディレクトリなので関係なし ブラウザからWWWサーバー上のファイルwwwcount.htmlを開いて見てください。 設置が成功していればカウンタが表示されるはずです。
- SSIをサポートしたサーバーから http://〜 という名前で読み込まないと動作しません。 file:〜 の場合は動作しません。
- SSIを使用する場合はファイルの拡張子を .html ではなく、.shtml にしなくてはならない場合があります。
- その他プロバイダによっては .htaccess などのファイルを用意する必要があります。
まず、サーバーがCGIをサポートしていることを確認してください。 .htaccess など必要な設定がある場合はサーバーの管理者の指示にしたがってCGIを使用できる状態にしてください。次に、WWWサーバー上に次のファイルを用意してください。
- http://サーバー/ディレクトリ/cgi-bin/0.gif
- http://サーバー/ディレクトリ/cgi-bin/1.gif
- : : : :
- http://サーバー/ディレクトリ/cgi-bin/9.gif
- http://サーバー/ディレクトリ/cgi-bin/index.html
- http://サーバー/ディレクトリ/cgi-bin/gifcat.pl
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.cgi
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.cnt
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.dat
- http://サーバー/ディレクトリ/cgi-bin/wwwcount.acc
- http://サーバー/ディレクトリ/cgi-bin/lock/
- http://サーバー/ディレクトリ/index.html
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.pl 644 UNIX形式 wwwcount.cgi 755 UNIX形式 wwwcount.cnt 666 何でもよい wwwcount.dat 666 何でもよい wwwcount.acc 666 何でもよい lock 777 ディレクトリなので関係なし カウンターを表示したいHTML文書(たとえば index.html)に以下の記述を追加してください。 ブラウザからこのファイルを開くとカウンターが表示されるはずです。
<IMG SRC="cgi-bin/wwwcount.cgi?gif">注意点をいくつか述べます。 このページの末尾にある「動作確認プロバイダ」の項も参照ください。
カウンター用の画像は下記のサイトに数多くあります。
- CGIカウンタでは、<IMG SRC=".....?gif"> のようにGIFを指定する必要があります。<IMG SRC="....?text"> は動作しません。
- プロバイダによっては、CGIを置くディレクトリが指定されていたりします。 <IMG>タグで呼び出す際も<IMG SRC="/cgi-bin/~ユーザ名/wwwcount.cgi?gif">のように呼び出す必要があったりします。 詳しくはプロバイダにお問い合わせください。
- 文書はWWWサーバーから http:〜 という名前で読み込むようにしてください。 file:〜 だと動作しません。
- FTPでファイルを送信する場合は、.cgi や .pl ファイルはテキストモードで、.gif ファイルはバイナリモードで送信してください。
- ブラウザで[画像表示]をオフにしている場合はオンにしてください。
- その他「CGIスクリプト作成時の注意」を参照してください。
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))
このカウンターで用いている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. 不備の原因」も表示されます。 このテストが失敗する原因は・・・・
・・・などですが、少なくともこのテスト1が正常に動作するまでは、「CGIスクリプト作成時の注意」を読んだり、プロバイダに問い合わせるなどして解決してください。
- サーバーがCGIをサポートしていない。
- 1行目の#!の前に空白文字や空行がある。
- 1行目のperlのパス名が適切でない。
- wwwcount.cgiをテキストモードで送信していない。
- wwwcount.cgiのパーミッションが755でない。
- .htaccessが設置されていない。(プロバイダにより必要)
- テスト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/ にジャンプ!!
- BIGLOBE mesh
1行目を #!/usr/mesh/bin/perl に変更。- BIWALOBE (tsukamotoさん)
SSIカウンタを使用。 「$sendmail = "/usr/ucblib/sendmail";」に修正。- EDIT.net (WinBeeさん)
変更点特になし。- Intio-net (DirectSearchさん)
「$nkf = '/home/www/httpd-doc/cgi-bin/nkf';」に修正。- So-net (pukuさん)
cgi-binディレクトリに次のような内容の.htaccessファイルを用意。
AddType text/x-server-parsed-html .html .htm
AddType application/x-httpd-cgi .pl- WILLNET (TSUNEさん)
$sendmail = "/usr/sbin/sendmail"; に修正。- 3WEB (雨乃渦痲さん)
cgi-bin配下のファイルをプロバイダの指示に従ってCGI専用サーバに配置し、<IMG SRC="http://〜">で呼び出す。- InfoSakyu (HMWRさん)
1行目を#!/usr/bin/perlに修正。- MEDIAWARS (白岩さん)
変更点特になし。- NETAGE (へみょさん)
1行目を #!/usr/bin/perl に、$nkf = 〜 の行を $nkf = '/bin/nkf'; に変更。- BROADWAY INTERNET (Tom Kanaiさん)
変更点特になし。- RIMNET (みたまさん)
.htaccessの設定が必要。- VC-net (宮崎さん)
変更点特になし。- 山梨インターネット (大月さん)
画像ファイルはcgi-binの隣のimageディレクトリ(パーミッションは755)の下に置く。 wwwcount.cgiの「push(@files, "$n.gif");」という行を「push(@files, "../image/$n.gif");」に修正。- SPICE INTERNET SERVICE (柄沢さん)
「$sendmail = '/usr/sbin/sendmail';」に修正。- U-net SURF (やっしゃんさん)
CGIを置く場所は説明通りだが、呼び出しをプロバイダの指示に従って次のようにする。
<IMG SRC="/cgi-bin/cgiwrap/~ユーザ名/wwwcount.cgi?gif">- ITJIT (ベルデ@伊藤さん)
特に変更点無し。- Hi-ho (間賀田さん)
CGIを指定された場所に置き、SRC="/cgi-bin/user/username/wwwcount.cgi?gif" のように呼び出す。 (前田さんより情報追加:sendmailの代わりにプロバイダ用意のssendmailを使用。nkfは無くても動作可。)- T-CNET (高橋さん)
perl, sendmailのパス名をプロバイダの指示に従って変更。- Aurens (kazu☆さん)
wwwcount.cgiをwwwcount.plに変更。 wwwcount.cgiの2行目に chdir("C:/www/contents/hp/user/cgi-bin/"); のように、wwwcount.cgi を設置したディレクトリを指定する。- 1st-Net Japan(名古屋1ドメイン) (杜夜さん)
wwwcount.cgiをプロバイダの指示した場所に設置し、<IMG SRC="http://cgi.ngy1. 1st.ne.jp/ ~ユーザ名/ cgi-bin/ wwwcount.cgi?gif"> で呼び出す。 - 117ネット (前田さん)
特に変更点無し。- Infoweb (Chattonellaさん)
1行目を #!/usr/bin/perl に変更。- INTERNET WIN (DAIさん/けいすけさん)
プロバイダの指示に従い ユーザ名/www/cgi-bin に設置し、<IMG SRC="/ユーザ名-bin/wwwcount.cgi?gif"> で呼び出す。- LinkClub (MixMizukaさん)
特に変更点無し。- InfoRyoma (匿名希望さん)
特に変更点無し。- interQ (蛭田さん)
プロバイダの指示に従い user-cgi-bin の下にwwwcount.cgiなどを置き、SRC="/cgi-bin/cgiwarp/ userName/ wwwcount.cgi?gif" で呼び出す。 上記の他のプロバイダでもCGIさえ使えれば大抵の場合動作可能と思います。(動作確認プロバイダの追加は締め切らせていただきました)