非公開:カウンタっくん

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

 無駄に多機能アクセスカウンターCGI。

仕様

・HTMLからCGIを呼び出し、CGIからJavaSciriptファイルを更新、JavaScriptでHTMLを生成します。
・ページ読み込みによるカウント(不特定のページから特定のページが呼び出された回数)とページ呼び出しによるカウント(特定のページから別の特定ページを呼び出した回数)を行います。
・トータル、及び当日から一週間前までの一日のアクセス数を参照することが可能です。(丸一日以上アクセスがなかったときも正確にカウントします)
・参照されるカウンタ値は「ページが表示された時点」でのカウント数です。(カウントされた値と表示される値は必ずしも一致しない、という意味。また、ページを更新、または同じブラウザで再表示した場合、カウントは行われませんが表示されるカウンタ値はその時点でのものになります)
・セッションクッキーで連続アクセスによる重複カウントを防止します。
・複数のカウンタを管理できます。
・複数のページからカウンタ値を参照することができます。
・テキスト、及び画像でカウンタを表示できます。
・複数のカウンタ画像を使用できます。
・アニメーションGIFやインタレースの画像も表示可能。
・カウンタ画像の0から9それぞれにimgタグのtitle属性を設定することができます。
・カウンタ各桁に異なる画像を選択できます。また各桁ごとに個別のstyle属性を指定できます。

制限

・JavaScriptをオフにしているブラウザではカウントが行われず、カウンタの表示もされません。
・セッションクッキーを制限しているブラウザからはページ読み込みによるカウントが行われません。(ページ呼び出しによるカウントは行われます)
カウントが行われた回はブラウザの「戻る」ボタンが正しく機能しなくなります。(同じページが表示されます)
・一般的なカウンタに比べてレスポンスが悪いです。

フォルダ構成(例)

※iswebでの設置例。カッコ内はパーミッション。CGI実行ファイルは”CKN2.cgi”、CGIが書き換えるファイルは”CKN2Back.cgi”、”CKN2Data.js”。実行後”CKN2Log.cgi”(アクセスログ記録時)、”tmp???.html”(”???”の部分はカウンタID)が作成されます。
※CGI実行ファイルのみを別フォルダに設置することもできます。詳しくは”CKN2.cgi”と”CKN2Ini.js”のソース内コメントを参照。

各ファイルの内容

CKN2.cgi
 CGI実行ファイル。CGI実行可能なフォルダに設置。文字コードはEUC。設定は後述。
※ウチのサイトで現在稼動中のものと同じ内容です。設置時に設定を行いアップします。

・CKN2Back.cgi
 カウンタログのバックアップファイル。CGIが書き換え可能なフォルダに設置。CGIが上書きするので内容不問。

CKN2.js
 JavaScriptの関数群。文字コードはHTMLファイルの文字コードに合わせて。
※このファイルは設定の必要はありません。

CKNData2.js
 カウントデータのマスター、及びJavaScriptカウントデータ設定。CGIが書き換え可能なフォルダに設置。文字コード不問。設定は後述。
※ウチのサイトで現在稼動中のカウンタの更新前初期データ。設置時に設定を行いアップし、更新処理(後述)を行います。

CKN2Ini.js
 JavaScript定義ファイル。文字コードはHTMLファイルの文字コードに合わせて。設定は後述。
※ウチのサイトで現在稼動中のものと同じ内容です。設置時に設定を行いアップします。

各ファイルの設定

・CKN2.cgi
 1行目のperlのパスと、『定義』内をコメントの通りに指定します。以下補足。
 戻り先制限アドレス(配列”@urlOK”)について。
 (気持ち)セキュリティ対策。サイト外からのCGIアクセスが可能なサーバーでは設定しておいたほうがいいかもしれません。
 具体的には、指定した文字列で始まるアドレス以外の戻り先を指定した場合はエラーになります。複数指定可。

・CKN2Data.js
 JavaScriptコメント内がカウンタのマスターデータになります。
 ”/*”、タブ、更新日データ、タブ、カウントデータ、以下タブで区切って複数のカウントデータを記録することができます。最後はタブ、”/*”。とりあえず設定が必要なのはここまで。この先のJavaScriptソースはCGIが作成します。
 更新日データは、とりあえず”0”を指定しておきます。(記録されるデータは1970年1月1日から当日までの経過日数)
 カウントデータは半角スペースで区切って、カウンタID、トータルのカウント数、日別カウント数を”-”で区切った文字列、となります。
 カウンタIDはカウンタ値を識別するための文字列を指定します。ファイル名の一部に使用されるため、それ相応の文字で。(全角文字とかは使わないほうが無難) ただし数字のみの指定は問題ない(はず)。

・CKN2Ini.js
 JavaScript定義ファイル。コメントの通りに指定します。以下補足。
 パスの指定はフルパスで。
 画像ファイルは「半角数字+拡張子」の形で定義内で指定したフォルダに設置しておきます。複数の画像を使用するときはフォルダ分けして設置。
 複数画像の定義はソース内の「↓ここから指定↓」から「↑ここまで指定↑」の部分を繰り返し指定。
 画像の種類はimgタグで表示可能なものなら何でも可。
※ただしアニメーションgifやプログレッシブ画像使用時各桁の画像は同期しません。(画像を連結して表示するわけではないので)

準備

 設定したファイルをサーバーにアップロードしパーミッションを設定したら一度データファイルの更新を行います。”CKN.cgi”に引数”?,update,”を付けて直接呼び出します。
 ウチの場合だと”http://shop-h.hp.infoseek.co.jp/cgi-bin/CKN2/CKN2.cgi?,update,”。
 ”データファイルを更新しました。”と表示されたら準備完了です。

 さて、そろそろいいかげんメンド臭くなってきました。
 しかしまだまだ続きます。

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

Since 2005 (C) hya All Rights Reserved.