03/16(Sun) 00:57
■ アクセス解析2(SSI式)の作り方(Web裏技さん)
アクセス解析は、サーバから提供される環境変数を参照することで、訪問者の様々な情報を取得し下記の項目を解析します。
- どこのリンクから訪れたか(接続されたか)。
- その訪問者の利用ホスト名は。
- 訪問者の使っているブラウザの種類とバージョンはなにか。
- 時間帯ごとの訪問数。
前の「アクセス解析」は、設定した一定件数のデータ内でログ解析を行いますが、この「アクセス解析2」は、
- 日毎にログを作成して、その日のすべてのアクセスが記録されます。
- このログは、yymmdd.csvというファイル名で生成され、昨日のログまで保存されます。
- それ以前、つまり3日以前のログは自動的に削除されます。
作成手順を説明します。
- プログラムをダウンロードします.
- ダウンロードしたプログラムを編集します.
- プログラムを呼び出すHTMLファイルを編集します.
- プログラムとHTMファイルをサーバに転送し、実行権を設定をします.
■ プログラムをダウンロードします。
- ファイルのダウンロードの前に、あなたのパソコンにディレクトリを作ります。
- ホームページのある場所(index.htmを置いてある場所)に log というサブディレクトリを作成します。(ここにファイルをダウンロードします。)
- サーバー側にも log というディレクトリを作成しておきます。
- 必要なプログラムとダウンロード
- Web裏技さんのチャレンジCGIコーナの「アクセス解析2」から下記の3つのファイルをダウンロードして下さい。
- webaxs2.cgi ----解析結果表示用(ソートあり)
- webaxs2.pl ----一般用
- bar.gif (グラフ用画像)
ダウンロードの方法は、プログラムの名前にカーソルをあて右クリックします。
- Netscapeの場合は「リンクを名前をつけて保存」
- Internet Explorerの場合は「対象をファイルに保存」
を選択します。
「名前をつけて保存」のウィンドウが起動します。
「保存する場所」として log を指定します。
「保存」を選択します。これでダウンロードができました。
■ ダウンロードしたプログラムを編集します。
- webaxs2.cgi
- 1行目 #!/usr/local/bin/perl をあなたのプロバイダの「perlのあるパス」に書き換えます。多くのプロバイダはこのままで動くと思いますが、うまくいかない時は、プロバイダに「perlのあるパス」を問い合わせてください。Infowebの場合は、#!/usr/bin/perlになります。
- webaxs2.pl
- 1行目 #!/usr/local/bin/perl をあなたのプロバイダの「perlのあるパス」に書き換えます。Infowebの場合は、#!/usr/bin/perlになります。
- 29〜35行目 集計に含めないURLを指定します。このままでも動きますので解らない方はなにもしなくても結構です。
(例)あなたのホームページのURLを指定すると、来訪者が「再読み込みボタン」などで再読み込みしたようなケースは集計しなくなります。この場合は、
@mine = (
"http://www\.host\.jp/~user/",
"",
"",
"",
); の http://www\.host\.jp/~user/ をあなたのホームページのURLに変更します。私の場合は、 http://kikuchisan\.net/ です。
(注1)複数のURLを指定する時は "" の間にURLを記述します。いくつでも書けます。
(注2).の前には\を書きます。
■
プログラムを呼び出すHTMLファイルを編集します。
- ログデータの取得(webaxs2.plの実行)
- index.htm の<BODY>内のどこかに<!--#exec cmd="./log/webaxs2.pl"-->とSSI形式で記述します。(よく解らない方は先頭行か最後の行に記述して下さい)
- ログデータの解析と表示(webaxs2.cgiの実行)
■
プログラムとHTMファイルをサーバに転送し、実行権を設定をします。
- webaxs2.cgi、webaxs2.pl、bar.gif の3つのファイルをサーバ側のディレクトリ log に、index.htmをホームディレクトリに転送します。
(注)webaxs2.cgi、webaxs2.pl、index.htmはアスキーモードの、bar.gifはバイナリーモードの転送です。
- ファイルの構成と実行権
転送が終わったら、それぞれのファイルに下の実行権を設定します。ディレクトリ log の実行権(777)の設定を忘れないで下さい。index.htmとbar.gifは設定の必要はありません。
index.htm
log(777)/---+-webaxs2.cgi (755)
+-webaxs2.pl (755)
+-bar.gif
さぁ,これで完成です。index.htmを再読み込みし、本日の、昨日のアクセス解析をクリックしてみましょう。アクセスログ解析が表示されれば完成です。
■
もっとあなた好みに改造してみませんか!
正常動作が確認できたら、もっとあなた好みにwebaxs2.cgiを改造しましょう。背景やテーブル色の変更やグラフ長の変更などが簡単にできます。ソースを読める方はいろいろトライしてみて下さい。私のページの例を赤字で書いてあります。
■背景色、文字色の変更。
63行目 print '<BODY bgcolor="#000000" text="#ffffff" link="#ff5555" vlink="#ffaaaa">' . "\n";
の bgcolor、text、link、vlink を変更します。(例)bgcolor="white"、background="gif/back.gif"など。
私は、background="gif/back.gif" text="navy" link="#CC285F" vlink="blue" alink="lime" にしています。
■テーブル色の変更。
テーブル背景----77、98、118、136行目 print "<table border>\n";
に<table border bgcolor=bisque>のように、色指定を記述します。
テーブルヘッダー背景----78、99、119、137行目 print "<tr><th nowrap>リンク元</th><th nowrap>件数(割合)</th></tr>\n";などの<tr>に
<tr bgcolor=#66CC99>のように、色指定を記述します。
■グラフの長さ調整。
84、105、125、142行目 $img = int($percent_refs * 10);などの
10 を変更します。値を大きくすると長く、小さくすると短くなります。私の場合は、フレームを使っているのでブラウザ調査のグラフを短めの 5 に設定してます。
■
ホスト名を名前(ドメイン名)で表示するための改造法
Infowebは昨年8月に、サーバ負荷の軽減のため「DNS逆引き」(IPアドレスからドメイン名を得る)を停止しました。リモートホストがIPアドレスで表示され味気なくなりましたね。ホスト名を名前(ドメイン名)で表示するための改造を行いましょう。
■改造個所(webaxs2.pl)
次の3カ所を追加・変更します。
- 24行目の$base_dir = "./log/";の次行に下の1行を挿入します。
$ipmas = $base_dir . "ipmas.dat"; #DNS逆引き用look up table
|
- 55行目のif文
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }
を削除またはコメント文(文頭に#をつける)にします。
- 91〜93行目の3行
if ($host =~ /(.*)\.(\d+)$/) { ; }
elsif ($host =~ /(.*)\.(.*)\.(.*)\.(.*)$/) { $host = "\*\.$2\.$3\.$4"; }
elsif ($host =~ /(.*)\.(.*)\.(.*)$/) { $host = "\*\.$2\.$3"; }
を下のスクリプトと置き換えます。マウスでスクリプトをドラッグしてメモ帳などのエディタで「コピー」→「貼り付け」ると楽です。
#--DNS逆引き------
open(FP,"<$ipmas") || die "Can't open $ipmas\n";
$flg=0;
while(){
($id1,$name1)=split(/\s+/);
if($host =~ /$id1/){ $flg=1; $host = $name1; last; }
}
close(FP);
if($flg==0){
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }
if ($host =~ /(.*)\.(\d+)$/) { ; }
elsif ($host =~ /(.*)\.(.*)\.(.*)\.(.*)$/) { $host = "\*\.$2\.$3\.$4"; }
elsif ($host =~ /(.*)\.(.*)\.(.*)$/) { $host = "\*\.$2\.$3"; }
}
#--DNS逆引き(ここまで)------
|
■ Look-up-table ipmas.datの入手
DNS逆引き用 Look-up-table ipmas.dat をダウンロードします。
ダウンロードした ipmas.dat は webaxs2.pl と同じ log フォルダに置きます。(注)ipmas.datのパス指定はSSI記述したHTML文から見たパスになります。
ipmas.dat (約33KB、2005/12/27版) :ipmas.datをクリック(左)するとダウンロードを始めます。(左クリックすると表示するか保存するか聞いてきますので「ファイルに保存」を選択するとdowncnt.cgi という名で保存されます。ファイル名をipmas.datに変更して下さい。)
|