最終更新日:2003/03/02
複数ページを総合記録できるアクセス解析CGIです 。ダミーイメージを使ってCGIを起動することが可能なため、SSIを使用できないページのログも取れるのが特徴。 他のCGIからの呼び出しも可能です。
最大の特徴は、それぞれのページがどんな風に見られてるかアクセスパターンを分析できることです。
cgi-bin(ディレクトリ) | |----accdata(ディレクトリ) | | | |----index.html | | | |----lock2.dat | | |----access(ディレクトリ) | | | |----access.pl | | | |----accgate.cgi | | | |----accimg.cgi | | | |----accupdate.pl | | | |----accview.cgi | | | |----accviewsub.pl | | | |----bar1.gif | | | |----bar1v.gif | | | |----configA.pl | | | |----configB.pl | | | |----index.html | | | |----jumper.cgi | | |----lib(ディレクトリ※) | |----Jcode.pm | | |----Jcode(ディレクトリ) | | | |----Constants.pm | | | |----H2Z.pm | | | |----Tr.pm | | | |----Unicode.pm | | | | | |----Unicode(ディレクトリ) | | | |----Constants.pm | | | |----NoXS.pm | | |----MIME(ディレクトリ) | |----Base64.pm※「lib」ディレクトリ以下は、CPANで配布されている標準モジュールです。既に導入されているサーバーの場合は、 「lib」ディレクトリ以下のアップロードは不要です。
ファイル名 |
内容 | パーミッション(※) |
accdata/ | 記録ディレクトリ | 707 |
lock2.dat | ロックファイル(記録データへの多重書込みを防止するためのファイル) | 606 |
access/ | 実行ディレクトリ | 705 |
accimg.cgi | 記録(&ダミーイメージ出力)CGI | 705 |
accview.cgi | 記録集計表示CGI | 705 |
accgate.cgi | パスワード入力および集計表示項目設定CGI | 705 |
jumper.cgi | 記録集計表示CGIからリンク元にジャンプするためのCGI | 705 |
ERROR:指定期間(20XX年X月X日までのX日間)のアクセス記録ファイルを読み込めません。
※注: 一行目のperlのパスについて:
libディレクトリを使用する場合は、一行目のperlのパスには、以下の例のように「-I../lib」をつけるようにして下さい。
例: #!/usr/local/bin/perl -I../lib #!/usr/bin/perl -I../lib逆に、CPANで配布されている標準モジュールを既に導入しているため、libディレクトリを使用しない場合は、「-I../lib」をつけてはいけません。(なんのことか良くわからない方は、libディレクトリを使用することにすれば、とりあえず動くのではと思います)
似たようなことを二回書いているように見えますが、上の<script...で始まるほうが、JavaScriptをつかえるブラウザ用の設定、下の<noscript>で始まるほうがJavaScriptをつかえない(または禁止している)ブラウザの設定です。
以下、詳しくは方法1を参照してください。
赤字で書いてあるのが「accimg.cgi」のパスです。別サーバーから呼び出すときはURLをすべて書く必要があります。
緑字で書いてある単語が、そのページのアクセス時に記録されます。
注意:画像タグ「<IMG src=〜>」は、以下の例のように、改行せずに一行で書いてください。(上の例では、方法1、方法3ともに、見易さの為、ブラウザのウィンドウ幅で改行が入っています。)
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>");
#!/usr/local/bin/perl
…(各種処理)…
##### ヘッダ表示(一例)
print "Content-type: text/html\n\n";
print <<"_EOL_";
<html lang="ja-JP">
<head><title>$title</title></head>
<body>
_EOL_
#### アクセス集計ファイル更新タグ表示
my $refer = $ENV{'HTTP_REFERER'};
print <<"_EOL_";
<img SRC="http://www.xxx.ne.jp/~XXXX/cgi-bin/access/accimg.cgi?id=BBS&img=1&ref=$refer" BORDER=0 height=1 width=1>
_EOL_
赤字が、リンク元の記録をとる処理です。CGIから呼び出す場合は、JavaScriptなしで、リンク元が記録できます。
緑字が記録される単語です。適宜変更してください。
ファイル名 |
内容 | パーミッション(※) |
accdata/ | 記録ディレクトリ | 707 |
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 |
configA.pl | アクセス記録時の各種オプション設定ファイル(自動アップデート時刻の設定などは、この中にあります) | 604 |
configB.pl | 記録集計表示時および自動アップデート時の各種オプション設定ファイル(パスワードの設定などは、この中にあります) | 604 |
index.html | ダミーHTML(ディレクトリの中身を他人に見られないため) | 604 |
bar1.gif | 記録表示CGI用棒グラフ(横)画像(サンプル) ......デフォルト設定では使用しません | 604 |
bar1v.gif | 記録表示CGI用棒グラフ(縦)画像(サンプル) ......デフォルト設定では使用しません | 604 |