非公開:カウンタっくん

アクセスカウンターCGI『カウンタっくん』

設置

 カウンタを使用(読み込みカウント、呼び出しカウント、カウンタ値の参照)するHTMLのヘッダに以下を追加。

※上記はウチのサイトの入り口ページの例。パスは、HTMLファイルから見た各JavaScriptファイルへのパス、または絶対パスへの変更が必要。

 続けて関数”CKN(pageName, ID, address)”を呼び出します。以下は引数の説明。

・pageName
 設置するHTMLそれぞれに固有の文字列を指定します。一時的にクッキーに保存されます。半角英字で始まる半角英数字の文字列とかにしておいたほうが無難。他のカウンタを使うHTMLのものと重複しないように。

・ID
 ”CKN2Data.js”で設定したカウンタID。ページが呼び出されたときにカウント処理を行う場合にカウントするIDを指定。カウント処理を行わない場合は空文字列。

・address
 戻り先アドレス。ページが呼び出されたときにカウント処理を行う場合は呼び出し元のHTMLのアドレス。絶対パス、またはデータファイルを置いたフォルダから見た相対パスで。カウント処理を行わない場合は空文字列。
 以下は設定の例。
 ページが呼び出されたときにカウント処理を行う場合の例。

 他のページを呼び出すときにカウント処理を行う場合と、カウンタ値を参照する場合の例。

 他のページを呼び出すときにカウント処理を行う場合は関数”callCKN(ID, address)”を使用します。IDはカウントするIDを、addressは呼び出し先アドレスを指定。
 使用例。

表示

 以下のJavaScript変数、及び関数の戻り値を”document.write”することでカウンタを表示します。
・変数t['ID']、c['ID'][days]
 ”t”はトータルのカウンタ値、”c”は一日のカウンタ値。添え字”['ID']”でカウンタIDを指定します。
 添え字”[days]”で何日前のカウンタ値を参照するか指定します。”0”で当日、”1”で1日前、以下同様に7日前のカウンタ値まで参照することが可能です。
 カウンタID”omote”の前日のカウント数を表示する例。

・関数Cha(count, digit, 'option')
 引数”count”から引数”digit”で指定した桁数の値取り出し、半角数字の文字値として返します。
 引数”'option'”に”z”を指定すると空いた上位の桁がゼロ埋めされます。
 カウンタID”ura”のトータルのカウント数を5桁でゼロ埋めして表示する例。

・関数Img(count, digit, 'nameIMG', 'style', 'option')
 引数”count”から引数”digit”で指定した桁数の値取り出し、引数”'nameIMG'”で指定した画像名のimgタグを文字列として返します。(画像名は”CKN2Ini.js”内で指定した「画像の名前」)
 引数”'style'”にimgタグのスタイル属性を指定することができます。引数”'option'”については上に同じ。
 カウンタID”omote”の当日のカウント数を3桁、画像名”CCo”、黒1ピクセルのボーダー指定、ゼロ埋めアリで表示する例。

運用時作成されるファイル

 運用中、いくつかのファイルが他のデータファイルと同じフォルダに作成されます。

・アクセスログ
 ”CKN2.cgi”でアクセスログを記録する設定にしておくとカウント処理が行われたとき(「ページが呼び出されたとき」ではなく「CGIが呼び出されたとき」)にアクセスログを記録します。”CKN2Log.cgi”というファイルが作られ、カウンタID、呼び出し時刻、参照元アドレスのテキストデータが記録されます(文字コードEUC)。
 内容を確認するときは”CKN2Log.cgi”をダウンロードしてテキストエディタなどで開いてください。
 ひたすら追加書き込みされていくだけなので定期的に削除してください。メンテナンスが面倒なら記録しない設定に。また、アクセス数が多いサイトでも記録しない設定にしておいた方が無難。

・バックアップ
 カウント処理が行われるたびにカウントデータのバックアップファイルが作成されます。ファイル名は”CKN2Back.cgi”。内容は”CKN2Data.js”のマスターデータ(前半のコメント部分)です。何かのトラブルで”CKN2Data.js”が壊れたときにはこのファイルを確認してみてください。
 復旧は”CKN2Back.cgi”の内容を”CKN2Data.js”にコピーしてアップロード、CGIからデータファイルの更新を行ってください。
 ただしバックアップがちゃんと機能するかどうかは不明。トラブルが起こってみないとわからないのでテストのしようが無いデス。ま、どのみち完璧なバックアップなど不可能ですので保険みたいなもんだと思ってください。

・JavaScript更新チェック用HTML
 カウント後JavaScriptファイルの更新が反映されて読み出されるか確認するためのファイルです。ファイル名は”tmp???.html”(”???”はカウンタID)。
 CGIからこのファイルを経由して指定ページへジャンプします。(ブラウザの「戻る」ボタンが機能しなくなるのはこのため)
 カウンタIDを変更または削除した場合不要なファイルが残りますので、気になるなら削除を。残しておいても特に問題はありません。(必要なファイルは削除しても自動で作成されます)
※この手続き、処理の順序を考えると不要としか思えないのですが、省略するとなぜか結構な頻度で更新前の値が参照されてしまいます。ロックが利いてない?

おまけ

キリ番機能(現時点では機能的にすごく中途半端なため、隠し機能)
 特定の番号をカウントしたときに指定ページへジャンプします。
 表示上のキリ番ではなく、指定した番号にカウンタを「回した」人を特定するために作った機能、なんですが、いくつかの制限、及び機能としての不備があります。
 使用するには”CKN2.cgi”内のキリ番指定用ハッシュ”%kiri”を定義します。(サンプルのソースではコメントアウトしてあります)
 キーにキリ番指定するカウンタのIDを。定義内容は、はじめにキリ番を踏んだ際に移動するページのアドレス、半角スペース、以下に半角スペースで区切って指定するキリ番を半角数字で指定。複数指定可。
 指定した部分が下の桁から一致したときにキリ番と判断します。(例えば”00”を指定するとキリ番は”100”、”200”、”300”・・・、となります)
 以下は制限と不備。
 キリ番獲得時に表示するページからは獲得したキリ番を確認することができません。(接近したキリ番設定でなければ状況的に判断することは可能ですが) また、このページからカウンタ値を参照すると値が不正確な場合があります。(更新前のカウンタ値が参照されることがあります。5回に1回くらい? また、これは仕様ですが、アクセスが集中していると値を参照した時点でカウンタ値がキリ番を超えている場合があります)
 複数のブラウザが同じキリ番をカウントする可能性があります。(現実的にはほぼ有り得ませんが)

 一通りの説明はとりあえずこんなもんかな?
 簡単な応用としては、桁ごとに表示を変えたり(特定の桁のみ画像等)表示位置を変えたり(縦表示等)。JavaScriptを使える方なら特定の数字のみ色違いとか、漢数字表記(「二千五百三十」みたいな。ただしこれは例外処理がかなり面倒)とかも可能です。
 リンクページのアクセス回数を記録してランキング表示、なんて使い方もそれほど難しいことではないと思います。
 興味のある方はいろいろいじくってみても面白いかもしれません。

更新2006.06.13
ちょっと仕様変更2006.05.09
初出2006.05.07

Since 2005 (C) hya All Rights Reserved.