#!/usr/bin/perl #┌───────────────────────────────── #│ List for Access Report v3.0 (2002/10/24) #│ Copyright(C) Kent Web 2002 #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── $ver = 'Access Report v3.0'; #┌───────────────────────────────── #│ [注意事項] #│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した #│ いかなる損害に対して作者は一切の責任を負いません。 #│ 2. 設置に関する質問はサポート掲示板にお願いいたします。 #│ 直接メールによる質問は一切お受けいたしておりません。 #└───────────────────────────────── #============# # 基本設定 # #============# # ログファイル $logfile = './report.log'; # スクリプトURL $script = './replist.cgi'; # ホームページタイトル $title = "KEIDESIGNROOM"; # リスト一覧からの戻り先 (絶対パスなら http://からのURLで記述) $home = "../home.html"; # bodyタグ $body = ''; # 本文中の文字の大きさ(スタイルシート) $b_size = '10pt'; # タイトル部の文字の大きさ(スタイルシート) $t_size = '18pt'; # タイトル文字の色 $t_color = "#008080"; # 表示文字色 $font = "#008040"; # グラフ画像(絶対パスなら http://からのURLで記述) $graph1 = "./graph1.gif"; # 横軸 $graph2 = "./graph2.gif"; # 縦軸 # リスト最低表示件数(これに満たない情報は非表示) $max_ref = 1; # リンク元 $max_os = 1; # OS情報 $max_brz = 1; # ブラウザ $max_hst = 1; # ホスト名 # 項目部の色指定 $under = "#555555"; # 下地の色 $point = "#FFFF00"; # ポインタ(■)の色 $items = "#FFFFFF"; # 項目文字の色 # パスワード # → ここに英数字でパスワードを記述すると「閲覧」には # このパスワードが必須となります。 $pass = '0208'; #============# # 設定完了 # #============# if ($pass ne "") { &decode; if ($in{'pass'} ne "" && $pass ne $in{'pass'}) { &error("パスワードが違います"); } elsif ($in{'pass'} eq "") { &header; print "

パスワードを入力して下さい

\n"; print "
\n"; print "\n"; print "
\n"; print "
\n\n"; exit; } } local($top); $count=0; $i=0; $j=0; $k=0; $l=0; open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; while () { $count++; ($agent,$os,$host,$ref,$hour) = split(/<>/); if ($agent) { $AGENT{($agent)[0]}++; $i++; } if ($os) { $OS{($os)[0]}++; $j++; } if ($host) { $HOST{($host)[0]}++; $k++; } if ($ref) { $REF{($ref)[0]}++; $l++; } if ($hour ne "") { $HOUR{($hour)[0]}++; } } close(IN); &header; print <<"EOM";
TOP

Access Report

  • 以下は $title へのアクセス解析です。
  • 解析データは直近 $count件です。

  リンク元の取得

  • リンク元の取得情報($max_ref件以上 / 取得件数:$l件)

    EOM print "\n"; print "\n"; $flag=0; foreach (sort { $REF{$b} <=> $REF{$a} } keys %REF) { # 最低表示件数 if ($REF{$_} < $max_ref) { last; } $per = int(($REF{$_}*1000 / $l)+0.5) / 10; $per = sprintf("%.1f", $per); if (!$flag) { $flag=1; $bai = $per; if ($bai > 30) { $bai = 5; } elsif ($bai > 20) { $bai = 7; } elsif ($bai > 10) { $bai = 12; } else { $bai = 20; } } $wid = int($per * $bai); if ($wid < 1) { $wid = 1; } # 文字列長の調整 if (length($_) > 72) { $url = substr($_,0,68) . "..."; } else { $url = $_; } print ""; print ""; print "\n"; } print "
    件数リンク元グラフ
    $REF{$_}$url $per\%

  • \n"; ## --- OS情報 print "

     "; print " 訪問者マシンOS\n"; print "
    \n"; print "

  • 訪問者のマシンOS情報 ($max_os件以上)
    \n"; print "

    \n"; print "\n"; foreach (sort { $OS{$b} <=> $OS{$a} } keys %OS) { # 最低表示件数 if ($OS{$_} < $max_os) { last; } $per = int(($OS{$_}*1000 / $j)+0.5) / 10; $per = sprintf("%.1f", $per); $wid = int($per * 3); if ($wid < 1) { $wid = 1; } print ""; print "\n"; } print "
    件数OSグラフ
    $OS{$_}$_ $per\%

  • \n"; ## --- ブラウザ情報 print "

     "; print " ブラウザ\n"; print "
    \n"; print "

  • 訪問者のブラウザ情報 ($max_brz件以上)
    \n"; print "

    \n"; print "\n"; foreach (sort { $AGENT{$b} <=> $AGENT{$a} } keys %AGENT) { # 最低表示件数 if ($AGENT{$_} < $max_brz) { last; } $per = int(($AGENT{$_}*1000 / $i)+0.5) / 10; $per = sprintf("%.1f", $per); $wid = int($per * 3); if ($wid < 1) { $wid = 1; } print ""; print "\n"; } print "
    件数ブラウザグラフ
    $AGENT{$_}$_ $per\%

  • \n"; ## --- ホスト名 print "

     "; print " ホスト名\n"; print "
    \n"; print "

  • 訪問者のホスト名情報 ($max_hst件以上)
    \n"; print "

    \n"; print "\n"; foreach (sort { $HOST{$b} <=> $HOST{$a} } keys %HOST) { # 最低表示件数 if ($HOST{$_} < $max_hst) { last; } $per = int(($HOST{$_}*1000 / $k)+0.5) / 10; $per = sprintf("%.1f", $per); $wid = int($per * 3); if ($wid < 1) { $wid = 1; } print ""; print "\n"; } print "
    件数ホスト名グラフ
    $HOST{$_}$_ $per\%

  • \n"; ## --- 時間帯 print "

     "; print " アクセス時間帯\n"; print "
    \n"; print "

  • 訪問者のアクセス時間帯
    \n"; print "

    \n"; #print "\n"; print "\n"; foreach (0 .. 23) { print "\n"; } print "\n"; foreach (0 .. 23) { print ""; } # 著作権表示(削除不可) print <<"EOM";
    件数時間帯グラフ
    $HOUR{$_}
    "; if ($HOUR{$_}) { print ""; } print "
    時間帯:$_


  • - Access Report -
    EOM exit; #--------------# # エラー処理 # #--------------# sub error { &header; print <<"EOM";

    ERROR !

    $_[0]


    EOM exit; } #------------# # ヘッダー # #------------# sub header { print "Content-type: text/html\n\n"; print <<"EOM"; Access Report $body EOM } #----------------# # デコード処理 # #----------------# sub decode { local($buf, $key, $val); if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } foreach (split(/&/, $buf)) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 不要コード削除 $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; $val =~ s/\r|\n|\0//g; $in{$key} = $val; } } __END__