複数ページを記録できるアクセス解析CGIです。ダミーイメージを使ってCGIを起動することが可能なため、SSIを使用できないページのログも取れるのが特徴。他のCGIからの呼び出しも可能です。 最大の特徴は、それぞれのページがどんな風に見られてるかアクセスパターンを分析できることです。
特徴 |
利用規定 |
変更履歴 |
必要ファイル |
ディレクトリ構成 |
CGI設置 |
CGI変更 |
既存ページの変更 |
![]() 戻る |
◆特徴◆利用規定Perlのみで記述されているため、sh、C言語などが利用できない個人のホームページへの設置・運用が可能。(perl4では動作しない場合があります) 同一IPからの一定時間内のアクセスをまとめて記録。複数ページにまたがった閲覧記録が取れます。(クッキーやJavaScriptは使用していません。利用者のIPアドレスが一致し、アクセス時刻が近接している場合に、同一セッションでのアクセスと判断して集計します。) 一度設置してしまえば、記録したいページにダミー画像を貼り付けるだけでOKです。(ダミー画像を貼り付けるためにHTMLを書き換える必要があります。) 別のプロバイダに別室を設けている場合や、ホームページとCGIが別ディレクトリに分かれている場合でも、ダミー画像を使用してすべてのページの総合的な記録をとることができます。(少なくともひとつはCGIの実行できるディレクトリ/サーバーが必要です。不明の場合、契約しているプロバイダにお問い合わせください。) 記録ファイルはCSV形式なので、ダウンロードしてExel等で利用可能。(CSV形式:各データがカンマで区切られたテキストファイル。Excelなどの表計算ソフトで読み込み、編集、印刷することができます。) ◆変更履歴フリーウェアです。著作権は放棄しておりません。個人使用に限り、ご自由にお使いください。 スクリプトの再配布についてはご相談ください。 スクリプトの改造は自由ですが、改造後の再配布はご遠慮ください。 コピーライト(著作権表示)は削除・改変しないでください。 当スクリプトの利用により、何らかの問題が発生しても、当方ではいっさい責任を持ちません。 2000/09/03 Ver0.16 ページ別アクセス傾向表示追加(※) 2000/09/03 Ver0.16 同一ページ連続アクセス(再読み込み)では「同一アクセスでのページ巡回数」をカウントしない 2000/09/03 Ver0.16 タイムゾーン指定追加(海外サーバー対応) 2000/09/03 Ver0.16 「リンク先」・「リンク元」と、表示が混乱していたのを「リンク元」に用語統一 2000/08/31 Ver0.16 自己アクセス記録を残さないための自分のアクセスポイントの定義をIPでも可能に 2000/08/31 Ver0.16 自己アクセス記録を残さないための自分のブラウザの定義を数指定可能に 2000/07/06 Ver0.15 ロックファイルと集計データが消滅している場合の手動復活機能。(オプション機能) 2000/07/01 Ver0.15 集計データが消滅している場合の自動復活機能。(ログを記録) 2000/07/01 Ver0.15 ロックファイルが長時間残留している場合の自動削除機能。(ログを記録) 2000/07/01 Ver0.15 記録CGI「accimg.pl」のファイル名を「accimg.cgi」に変更。旧バージョンとの互換性のため「accimg.pl」も残す。 2000/06/12 Ver0.14 ロックファイルが長時間残留している場合の手動削除機能。 2000/06/12 Ver0.14 JavaScriptでリンク元を参照する機能(JavaScript設定必要)。 2000/06/04 Ver0.13 最小表示件数をパーセントで指定可能に。 2000/06/04 Ver0.13 ホスト名取得出来ない(123.456.789.12などと記録してしまう)場合に対処。(IP取得できた場合、一度だけDNSに問い合わせ)
※ DNSの逆引きが禁止されているプロバイダではホスト名取得は出来ません。2000/06/04 Ver0.13 記録ファイル(CSV形式)にタイトル行付加。 2000/06/04 Ver0.13 リンク元の検索条件を記録しない。(記録する設定も可) 2000/05/20 Ver0.12 サブドメイン別集計を表示。(Ver0.12は非配布) 2000/05/20 Ver0.11 同一アクセスでの登録ページ総閲覧回数を表示。(記録自体は、Ver0.10より行っていた。) 2000/04/16 Ver0.10 配布用に改造。配布開始(2000/05/06)。
以下のファイルが必要になります。設定の仕方は後述します。
ファイル名 内容 パーミッション accdata/ 記録ディレクトリ 707 access.csv 記録データ(空のファイルです) 606 index.html ダミーHTML(ディレクトリの中身を他人に見られないため) 604 access/ 実行ディレクトリ 705 accimg.cgi 記録(&ダミーイメージ出力)プログラム 705 accimg.pl Ver.0.14以前から使用している人用の記録(&ダミーイメージ出力)プログラム(新規に使用される人はこのファイルは不要です) 705 accview.cgi 記録表示プログラム 705 access.pl 記録サブルーチン 604 accviewsub.pl 記録表示サブルーチン 604 bar.gif 記録表示プログラム用棒グラフ画像(サンプル) 604 access/images/ 画像ディレクトリ 705 homeicon.gif ダミー画像(サンプル) 604 ※パーミッションについて
上記のパーミッションの3桁の数値は全て真中の桁が「0」になっていますが、サーバーによっては下二桁を最下位の数字にそろえる(例えば「705」と書いてあるものは「755」にする)必要がある場合があります。
専門的にいうと、CGIが「group」のパーミッションで起動される(ホームページ設置者と同じグループIDをホームページを訪問した人に割り当てる)サーバーが該当します。
圧縮ファイルを解凍すると、以下のディレクトリ構造が出来るはずです。FTPソフトを使って、この構成のままサーバーにアップロードするようにしてください。◆CGI設置cgi-bin(ディレクトリ) | |----accdata(ディレクトリ) | | | |----access.csv | | | |----index.html | | |----access(ディレクトリ) | |----access.pl | |----accimg.cgi | |----accviewsub.pl | |----accview.cgi | |----bar.gif | |----images(ディレクトリ) | |----homeicon.gif◆CGI変更「accview.cgi」と「accimg.cgi」の1行目のPerlのパスをプロバイダにあわせて書き換えてください。メモ帳(Notepad.exe)などのテキストエディタで書き換えます。プロバイダの設置案内を見ると、「#!/usr/bin/perl」とか,「#!/usr/loca/bin/perl」とかいうような、Perlのパスが書いてあると思います。そのパスにあわせて1行目を書き換えます。不明の場合は、プロバイダのサポート窓口にお問い合わせください。 GIFファイル(画像ファイル)以外のファイルはすべてアスキー(テキスト)モードでアップロードして下さい。 GIFファイル(画像ファイル)は、バイナリモードでアップロードして下さい。 ファイル名はすべて半角、アルファベットは小文字です。 上記「必要ファイル」の表を参考にして、各ファイルのパーミッションを設定して下さい。 次に、記録を残したい既存ページを改造するわけですが、その前に、うまく動作しているか確認します。ブラウザで「http://.../access/accview.cgi」を表示してみてください。 「http://.../access/accview.cgi」の動作が正常であることを確認したら、記録を残したいページを改造して、アップロードしてください。 以上で、運用開始です。改造した既存ページをブラウザでアクセスしたあと、ブラウザで「http://.../access/accview.cgi」を表示して、うまく記録されていることを確認してください。 基本的に、Perlのパス以外は設定不要のはずですが、お好みに合わせ、多少の設定が比較的楽に変更できます。主な設定は「accview.cgi」および「access.pl」の先頭部分に入っています。メモ帳(Notepad.exe)などのテキストエディタで必要な箇所を編集します。編集が必要な箇所は、それぞれのファイルの中に書いています。
このCGIは単体では役に立ちません。記録をとりたいページにCGIを呼び出す行を追加する必要があります。といっても、HTMLファイルにダミーの画像を貼り付けるだけで簡単に呼び出せます。
- 方法1: SSIが使えない場合、および、別サーバーのページの場合 (SSIが使える場合もこちらを推奨します)
以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。
<IMG src="cgi-bin/access/accimg.cgi?id=INDEX&img=images/homeicon.gif">
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。その場合、以下の例のようにかなり長くなります。
<IMG src="http://www02.so-net.ne.jp/~foo/cgi-bin/access/accimg.cgi?id=INDEX&img=images/homeicon.gif">
そのページがアクセスされたとき、緑字で書いてある単語が記録されます。「accview.cgi」でアクセス解析を表示するとき、「あしあと」として表示される単語です。重複しないようにそれぞれのページで異なる単語を指定してください。出来るだけ短く分りやすい単語を指定した方がアクセス解析が見やすくなります。半角のアルファベットと数字以外は使わないほうが無難でしょう。青字で書いてあるのが、そこに表示される画像ファイルです。GIFファイルならなんでも指定できます。画像ファイルの場所の指定は、「accimg.cgi」があるディレクトリからの相対パスで指定してください。表示させたいGIF画像ファイルをサンプルGIFファイル「homeicon.gif」と同じ「access/images/」ディレクトリの中にコピーしておくのが分りやすいと思います。別サイトのページに貼り付ける場合でも、CGI(accimg.cgi)の置いてあるサイトにある画像を指定してください。
- 方法2: SSIが使える場合
SSIが使える場合、以下のような行を追加します。
<!--#exec cmd="cgi-bin/access/accimg.cgi"-->
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すことは出来ません。
この行は、アクセス記録が行われるだけで、画像は表示されません。従って画像ファイルの場所の指定は不要です。方法1のように「あしあと」で表示する単語を指定することは出来ません。すべて「INDEX」という単語で記録されます。従ってトップページのみ方法2を使用して、他のページは方法1で記録するのが良いでしょう。
方法2には以下の二つの利点があります。
- 訪問者が、このページへリンクをたどってきた場合、参照ページが記録される。(プロバイダによっては記録されない場合もあります。)
- 訪問者のブラウザの設定で画像がキャッシュされるようになっていた場合、方法1では一度訪れたページを再び訪問しても記録が残らないが、方法2にはその恐れがない。(ページ自体がキャッシュされている場合は別)
どうしてもトップページ以外も方法2で記録したい場合は、そのページへのリンクを書き換えることで記録される単語を指定できます。
<a href="sample1.shtml?id=SSIsample">SSI-SAMPLE</a>
上の例では、「SSIsample」という単語が記録されます。欠点:そのページに直接リンクを張られた場合とかキーボードから直接URLを打ち込まれた場合、正確に「id=〜」まで指定されるかが問題です。さもなければ誤った単語が記録されます。
- 方法3: SSIが使えない場合、および、別サーバーのページの場合、リンク元の記録もとる
方法1ではリンク元の記録が出来ません。それを、JavaScriptを使って記録できるようにするには、以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。閲覧者のブラウザがJavaScriptを使用可能な場合、リンク元の記録も行われます。
<script language="JavaScript">
ほとんど同じようなことを二回書いているように見えますが、上のほうが、JavaScriptをつかえる場合、下のほうがJavaScriptをつかえない場合の設定です。
<!--document.write("<img SRC='cgi-bin/access/accimg.cgi?id=INDEX&img=images/homeicon.gif&ref=",document.referrer,"'>");
//-->
</script>
<noscript><img SRC="cgi-bin/access/accimg.cgi?id=INDEX&img=images/homeicon.gif">
</noscript>以下、詳しくは方法1を参照してください。
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。
緑字で書いてある単語が、そのページのアクセス時に記録されます。
青字で書いてあるのが、そこに表示される画像ファイルです。
- 方法4: (参考まで) CGIからの呼び出し
自作CGIから呼び出す場合は、以下のようにします。
##### ライブラリ指定
require '~/cgi-bin/access/access.pl';#### アクセス集計ファイル更新
&updateAccessFile('~/cgi-bin/accdata/access.csv', '~/cgi-bin/accdata/lock.dat', 'ACCES');
赤字が記録ファイルまでのパス。青字がロックファイルまでのパスです。そして緑字が記録される単語です。適宜変更してください。
◆注意 (「ページ別アクセス傾向」について)Ver.0.16より、ページ別集計「ページ別アクセス傾向」を表示するようにしましたが、この表示データは完全ではありません。あくまでアクセス傾向の目安とお考え下さい。
というのは、記録データファイルが巨大になることを防ぐため、同一アクセスで6ページ以上の閲覧があった場合、あしあと記録から直前に閲覧していたページの記録が削除されるようになっているからです。つまり、最初に閲覧したページから5件と、最後にアクセスしたページのみが記録に残り、その間にアクセスしたページは記録から削除されます。>INDEX>GALLERY>PROFILE>BBS>LINK>...>INFO ┗この間のアクセスページは記録に残らない削除されたページ別記録数は「ページ別アクセス傾向」に「...」という項目で表示されます(サンプルページ参照)。これも、あくまで目安です。
(「...」記録数 = 「あしあと記録から削除されていないページ別アクセス数」を「同一アクセスでのページ巡回数」から引いた値の総計)
出来るだけ正確なページ別アクセス数を記録したい場合は、「access/access.pl」ファイルの以下の行の'5'をもっと大きな数値に変更してください。#同一アクセス内のあしあとパターンの最大記録件数 #(必ず'2'以上を設定してください) $reclim = '5';また、同一アクセスで同じページを繰り返し訪れても閲覧回数は一回と数えるように(INDEX>PROFILE>INDEXと閲覧してもINDEXの閲覧回数を一回と数える)設定されていますが、それも数え上げたい(INDEX>PROFILE>INDEXと閲覧したらINDEXの閲覧回数を二回と数える)場合は、「access/access.pl」ファイルの以下の行の「$strong = 1;」を「$strong = 0;」に変えてください。#「$strong = 1」の時は同一セッションで同じページに複数回アクセスがあっても記録しない #(pageA→pageB→pageB→pageAとアクセスされたら、">pageA>pageB"と記録する) #「$strong = 0」の時は別ページのアクセスを挟んで同じページにアクセスがあったら記録する #(pageA→pageB→pageB→pageAとアクセスされたら、">pageA>pageB>pageA"と記録する) $strong = 1;
◆用語解説
- 相対パス
- 現在実行されているディレクトリより下だけを指定すること
例:絶対パス → "http://www.foo.ne.jp/~foo/cgi-bin/access/images/homeicon.gif" 例:相対パス → "images/homeicon.gif"
ご意見・ご質問・ご要望はこちらまで。
funabin@abox2.so-net.ne.jp