#!/usr/local/bin/perl # # WebACCESS 2 専用 アクセス解析表示用CGI (c)rescue.ne.jp # # ソートしないバージョン(データ数が多く処理時間を節約するバージョン) #このCGIから見たログファイルの場所 $base_dir = "./"; #画像バーのURL(このCGIから見たパス位置、またはhttp://から書く) $gif = './bar.gif'; #時刻関係は、外国サーバを利用の方は当サイトのFAQを読んで時差調整してください. $buffer = $ENV{'QUERY_STRING'}; if ($buffer eq 'yesterday') { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 24*60*60); @wday_array = ('日','月','火','水','木','金','土'); $date = sprintf("%01d月%01d日(%s)",$mon +1,$mday,$wday_array[$wday]); $log = sprintf("%02d%02d%02d",$year,$mon +1,$mday); $msg1 = '昨日の'; } elsif ($buffer eq 'today') { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @wday_array = ('日','月','火','水','木','金','土'); $date = sprintf("%01d月%01d日(%s)",$mon +1,$mday,$wday_array[$wday]); $log = sprintf("%02d%02d%02d",$year,$mon +1,$mday); $msg1 = '本日の'; $msg2 = '現在までの'; } else { &error('URLの後?マークに続けて処理指定を',"昨日分 http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}\?yesterday
本日分 http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}\?today"); } $log = $base_dir . $log . ".csv"; if (!open(DB,$log)) { &error('エラー','ログファイルを開けませんでした.'); } $m = $accesses = 0; while() { ($hour,$ref,$rh,$hua,$ccx,$x) = split(/\,/); if ($ccx == 1 || $ccx == 2) { $m++; if ($hour ne '') { $hours{($hour)[0]}++; $h++; } if ($ref ne '') { $refs{($ref)[0]}++; $i++; } if ($rh ne '') { $rhs{($rh)[0]}++; $j++; } if ($hua ne '') { $huas{($hua)[0]}++; $k++; } } $accesses++; } close(DB); #----------------# print "Content-type: text/html\n\n"; print "アクセス解析 -WebACCESS2-\n"; print '' . "\n"; print "

アクセス解析

\n"; print "$msg1 $date の$msg2解析結果

\n"; print "のべ訪問者数:$accesses 名
\n"; if ($ccx != 2) { print "再訪問数を除いた訪問者数:$m 名\n"; } print "

\n"; #----------------# print "


\n"; print "

リンク元調査

\n"; print "どこかのページのリンクから訪問した数:全$i件\/$mアクセス

\n"; print "\n"; print "\n"; foreach (keys %refs) { $percent_refs = (int(10000 * ($refs{$_} / $i)) / 100); $percent_refs = sprintf("%.1f",$percent_refs); $img = int($percent_refs * 10); if (length($_) > 50) { $url = substr($_,0,47) . "..."; } else { $url = $_; } print "\n"; } print "
リンク元件数(割合)
$url $refs{$_}\($percent_refs\%\)

\n"; #----------------# print "


\n"; print "

ホスト名調査

\n"; print "調査できた訪問者のホスト名:全$j件\/$mアクセス

\n"; print "\n"; print "\n"; foreach (keys %rhs) { $percent_rhs = (int(10000 * ($rhs{$_} / $j)) / 100); $percent_rhs = sprintf("%.1f",$percent_rhs); $img = int($percent_rhs * 10); print "\n"; } print "
リモートホスト件数割合グラフ
$_$rhs{$_}$percent_rhs\%

\n"; #----------------# print "


\n"; print "

ブラウザ調査

\n"; print "調査できた訪問者のブラウザ名:全$k件\/$mアクセス

\n"; print "\n"; print "\n"; foreach (keys %huas) { $percent_huas = (int(10000 * ($huas{$_} / $k)) / 100); $percent_huas = sprintf("%.1f",$percent_huas); $img = int($percent_huas * 10); print "\n"; } print "
ブラウザ名件数割合グラフ
$_$huas{$_}$percent_huas\%

\n"; #----------------# print "


\n"; print "

時間単位のアクセス調査

\n"; print "\n"; print "\n"; foreach (sort keys %hours) { $percent_hours = (int(10000 * ($hours{$_} / $h)) / 100); $img = int($percent_hours * 10); print "\n"; } print "
時間帯件数グラフ
$_$hours{$_}

\n"; print "


WebACCESS2

\n"; print "\n"; exit; sub error { print "Content-type: text/html\n\n"; print "アクセス解析 -WebACCESS2-\n"; print '' . "\n"; print "

$_[0]

\n"; print "

$_[1]

\n"; print "ブラウザの[戻る]ボタンを押して前の画面に移動してください.

\n"; print "\n"; exit; }