複数ページを記録できるアクセス解析CGIです 。ダミーイメージを使ってCGIを起動することが可能なため、SSIを使用できないページのログも取れるのが特徴。 他のCGIからの呼び出しも可能です。最大の特徴は、それぞれのページが どんな風に見られてるかアクセスパターンを分析できることです。
| 特徴 |
| 利用規定 |
| 変更履歴 |
| 必要ファイル |
| ディレクトリ構成 |
| CGI設置 |
| CGI変更 |
| 既存ページの変更 |
◆特徴◆利用規定Perlのみで記述されているため、sh、C言語などが利用できない個人のホームページへの設置・運用が可能。(perl5でかかれています。perl4では動作しません) 同一IPからの一定時間内のアクセスをまとめて記録。複数ページにまたがった閲覧記録が取れます。(セッションの判定に、クッキーtは使用していません。利用者のIPアドレスが一致し、アクセス時刻が近接している場合に、同一セッションでのアクセスと判断して集計します。) 一度設置してしまえば、記録したいページにダミー画像を貼り付けるだけでOKです。(ダミー画像を貼り付けるためにHTMLを書き換える必要があります。) 別のプロバイダに別室を設けている場合や、ホームページとCGIが別ディレクトリに分かれている場合でも、ダミー画像を使用してすべてのページの総合的な記録をとることができます。(少なくともひとつはCGIの実行できるディレクトリ/サーバーが必要です。不明の場合、契約しているプロバイダにお問い合わせください。) 記録ファイルはCSV形式なので、ダウンロードしてExel等で利用可能。(CSV形式: 各データがカンマで区切られたテキストファイル。Excelなどの表計算ソフトで読み込み、編集、印刷することができます。 ) フリーウェアです。著作権は放棄しておりません。個人・法人問わず、ご自由にお使いいただけます。 スクリプトの再配布は、原則禁止いたします。ご相談ください。 スクリプトの改造は自由ですが、改造後の再配布はご遠慮ください。 コピーライト(著作権表示)は削除・改変しないでください。 当スクリプトの利用により、何らかの問題が発生しても、当方ではいっさい責任を持ちません。
以下のファイルが必要になります。設定の仕方は 後述します。
ファイル名 内容 パーミッション accdata/ 記録ディレクトリ 707 access.csv 記録データ(空のファイルです) 606 lock2.dat ロックファイル(記録データへの多重書込みを防止するためのファイル) 606 index.html ダミーHTML(ディレクトリの中身を他人に見られないため) 604 access/ 実行ディレクトリ 705 accimg.cgi 記録(&ダミーイメージ出力)CGI 705 accview.cgi 記録表示CGI 705 accgate.cgi パスワード入力CGI 705 jumper.cgi 記録表示CGIからリンク元にジャンプするためのCGI 705 config.pl 各種オプション設定ファイル(パスワードの設定などは、この中にあります) 604 access.pl 記録ルーチン 604 accviewsub.pl HTML&パスワード関連ルーチン 604 jcode.pl 日本語コード変換ルーチン(Kazumasa Utashiro氏によるスクリプト。最新版は、 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ から入手できます。) 604 index.html ダミーHTML(ディレクトリの中身を他人に見られないため) 604 bar1.gif 記録表示CGI用棒グラフ(横)画像(サンプル) ......デフォルト設定では使用しません 604 bar1v.gif 記録表示CGI用棒グラフ(縦)画像(サンプル) ......デフォルト設定では使用しません 604 ※パーミッションについて
上記のパーミッションの3桁の数値は全て真中の桁が「0」になっていますが、 サーバーによっては下二桁を最下位の数字にそろえる(例えば「705」と書いてあるものは「755」にする)必要がある場合があります。専門的にいうと、CGIが「group」のパーミッションで起動される(ホームページ設置者と同じグループIDをホームページを訪問した人に割り当てる)サーバーが該当します。
圧縮ファイルを解凍すると、以下のディレクトリ構造が出来るはずです。FTPソフトを使って、この構成のままサーバーにアップロードするようにしてください。◆CGI設置cgi-bin(ディレクトリ) | |----accdata(ディレクトリ) | | | |----access.csv | | | |----index.html | | | |----lock2.dat | | |----access(ディレクトリ) | |----access.pl | |----accgate.cgi | |----accimg.cgi | |----accview.cgi | |----accviewsub.pl | |----bar1.gif | |----bar1v.gif | |----config.pl | |----index.html | |----jcode.pl | |----jumper.cgi◆CGI変更「accview.cgi」・「accgate.cgi」・「accimg.cgi」・「jumper.cgi」の1行目のPerlのパスをプロバイダにあわせて書き換えてください。 メモ帳(Notepad.exe)などのテキストエディタで書き換えます。プロバイダの設置案内を見ると、「#!/usr/bin/perl」とか,「#!/usr/loca/bin/perl」とかいうような、Perlのパスが書いてあると思います。そのパスにあわせて1行目を書き換えます。不明の場合は、プロバイダのサポート窓口にお問い合わせください。 GIFファイル(画像ファイル)以外のファイルはすべてアスキー(テキスト)モードでアップロードして下さい。 GIFファイル(画像ファイル)は、バイナリモードでアップロードして下さい。 ファイル名はすべて半角、アルファベットは小文字です。 上記「必要ファイル」の表を参考にして、各ファイルのパーミッションを設定して下さい。 次に、記録を残したい既存ページを改造するわけですが、その前に、うまく動作しているか確認します。ブラウザで「http://.../access/accview.cgi」を表示してみてください。(config.plで各種設定を書き換える前に行ってください。) 「http://.../access/accview.cgi」の動作が正常であることを確認したら、 記録を残したいページを改造して、アップロードしてください。 以上で、運用開始です。改造した既存ページをブラウザでアクセスしたあと、ブラウザで「http://.../access/accview.cgi」を表示して、うまく記録されていることを確認してください。 基本的に、Perlのパス以外は設定不要のはずですが、お好みに合わせ、多少の設定が比較的楽に変更できます。主な設定は 「config.pl」に入っています。メモ帳(Notepad.exe) などのテキストエディタで必要な箇所を編集します。編集が必要な箇所は 、ファイルの中に書いています。 変更の仕方を間違えると動作しなくなる恐れがありますし、「config.pl」を変更しなくとも、動作するはずですので、まず、設置して、しばらく運用してみて、すべて正常に動作することを確認したあと、「config.pl」を変更することをお奨めします。
このCGIは単体では役に立ちません。記録をとりたいページにCGIを呼び出す行を追加する必要があります。といっても、HTMLファイルにダミーの画像を貼り付けるだけで簡単に呼び出せます。
- 方法1: いちばん簡単な方法
以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。
<IMG src="cgi-bin/access/accimg.cgi?id=INDEX&img=1&ref=noScript" border=0>
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。その場合、以下の例のようにかなり長くなります。
<IMG src="http://www02.so-net.ne.jp/~foo/cgi-bin/access/accimg.cgi?id=INDEX&img=1&ref=noScript" border=0>
そのページがアクセスされたとき、緑字で書いてある単語が記録されます。「accview.cgi」でアクセス解析を表示するとき、「あしあと」として表示される単語です。 重複しないようにそれぞれのページで異なる単語を指定してください。出来るだけ短く分りやすい単語を指定した方がアクセス解析が見やすくなります。半角のアルファベットと数字以外は使わないほうが無難でしょう。最後の「img=1」というのは、そこに画像を表示するための指定です。(AshiatoLOG Ver0.xx では、画像ファイルを指定しましたが、Ver1.0からは不要になりました。)
サイズ1x1の透明GIF画像が表示されるため、実際は目に見えません。方法3の方が優れていますが、先に方法1で動作を確認することをお奨めします。
方法2: SSIを使う場合 ※削除※
(この方法は設置に技術的に難しい問題がある割には、利点が少ないため、設置方法の説明は削除いたしました。)方法3: より詳しい情報を記録したい場合 方法1ではリンク元の記録が出来ません。これをJavaScriptで記録します。また、Ver.1.0xから追加された解像度の集計にもJavaScriptが必要です。方法1で動作を確認できたら、方法3を使う事をお奨めします。
以下のような行を追加します。この行で指定の画像が表示されると同時にアクセス記録が行われます。閲覧者のブラウザがJavaScriptを使用可能な場合、リンク元の記録と画面解像度の記録も行われます。
<script language="JavaScript"> <!--document.write("<IMG src='cgi-bin/access/accimg.cgi?id=INDEX&img=1&scr=", screen.width, "x", screen.height, "x", screen.colorDepth, "&ref=", escape(document.referrer), "' border=0>");
//-->
</script>
<noscript><IMG src="cgi-bin/access/accimg.cgi?id=INDEX&img=1&ref=noScript" border=0>
</noscript> 似たようなことを二回書いているように見えますが、上の<script...で始まるほうが、JavaScriptをつかえるブラウザ用の設定、下の<noscript>で始まるほうがJavaScriptをつかえない(または禁止している)ブラウザの設定です。以下、詳しくは方法1を参照してください。
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。
緑字で書いてある単語が、そのページのアクセス時に記録されます。
方法4: (参考まで) CGIからの呼び出し 自作CGIから呼び出す場合は、以下のようにします。
#!/usr/local/bin/perl##### ライブラリ指定
require '~/cgi-bin/access/config.pl';
require '~/cgi-bin/access/access.pl';#### アクセス集計ファイル更新
$acclog = new AshiatoFile('~/cgi-bin/accdata/', $wrfile, $errfile, $lockfile, 300, 5, $maxlog, $intime, $updatetm);
$acclog->appendAccFile('CGINAME', $ENV{'HTTP_REFERER'});
赤字が、記録ディレクトリの指定です。
そして 緑字が記録される単語です。適宜変更してください。
(青字は順に、ロックファイルが残留しているとみなす時間[300秒]、ファイルロックされていた場合のリトライ回数[5回]です。特に変更する必要は無いと思います。)
ご意見・ご質問・ご要望はこちらまで。
funabin@abox2.so-net.ne.jp