package DetectivePage; # # ページ関連 # update 2005.07.08 # 1st ver 2005.02.13 # Copyright (C) 2005 Yasuhiro Oshima. All rights reserved. #検索エンジン識別URL my %search_url_array = ("google" => "www.google.", "yahoo" => "search.yahoo.", "msn" => "search.msn.", "goo" => "search.goo.ne.jp", "excite" => "excite.co.jp", "nifty" => "search.nifty.com", "biglobe" => "search.biglobe.ne.jp", "infoseek" => "infoseek.co.jp", "livedoor" => "search.livedoor.com", "aol" => "search.jp.aol.com/search"); #HTTPヘッダ sub HttpHeader{ return "Content-type: text/html\n\n"; } #ページヘッダ sub PageHeader{ my($mode, $program_name, $program_filename) = @_; my $str = "" . $program_name . " - アクセス解析\n" . "\n" . "\n" . "\n" . "

" . $program_name . " - アクセス解析

\n"; if($mode ne ""){ $str .= "[ ログインページ(ログアウト)]

\n"; } return $str; } #ページフッタ sub PageFooter{ my($program_url, $program_name, $program_copyright) = @_; my $str = "


\n" . "" . $program_name . "
\n" . $program_copyright . "\n" . "\n"; return $str; } #ページテーブル項目 sub PageTableMenu{ my(@arg) = @_; my $str = "\n" . "\n"; for($i=0;$i<=$#arg;$i++){ $str .= "\n"; } $str .= "\n"; return $str; } #ページテーブル sub PageTableCell{ my($arg) = @_; if($arg ne ""){ return "\n"; }else{ return "\n"; } } #ページテーブルリンク sub PageTableLink{ my($url, $sitetop) = @_; my $bgcolor; if($url ne ""){ if($url =~ /$search_url_array{'google'}/){ $bgcolor = "#55FF55"; }elsif($url =~ /$search_url_array{'yahoo'}/){ $bgcolor = "#FF5555"; }elsif($url =~ /$search_url_array{'msn'}/){ $bgcolor = "#5555FF"; }elsif($url =~ /$search_url_array{'infoseek'}/){ $bgcolor = "#AA8800"; }elsif($url =~ /$search_url_array{'excite'}/){ $bgcolor = "#777777"; }elsif($url =~ /$search_url_array{'goo'}/){ $bgcolor = "#993333"; }elsif($url =~ /$search_url_array{'nifty'}/){ $bgcolor = "#FF8800"; }elsif($url =~ /$search_url_array{'biglobe'}/){ $bgcolor = "#FFFF00"; }elsif($url =~ /$search_url_array{'livedoor'}/){ $bgcolor = "#800080"; }elsif($url =~ /$search_url_array{'aol'}/){ $bgcolor = "#80FFFF"; }elsif($url =~ /^$sitetop/){ $bgcolor = "#DDDDDD"; }else{ $bgcolor = "#BBCCFF"; } return "\n"; }else{ return "\n"; } } #ページテーブルディスプレイ情報 sub PageTableDisplay{ my($width, $height, $color) = @_; if($width ne ""){ return "\n"; }else{ return "\n"; } } #ページテーブルグラフ数値 sub PageTableGraphNum{ my($arg) = @_; if($arg ne ""){ return "\n"; }else{ return "\n"; } } #ページテーブルグラフ画像 sub PageTableGraphImg{ my($t_cnt, $u_cnt) = @_; if($t_cnt ne ""){ #$t_cnt = $t_cnt * 2; return "\n"; }else{ return "\n"; } } # # その他 # #検索キーワード取得 sub GetKeyword{ my($arg) = @_; my $decodeStr = $arg; my %decodeStrHash; #my $sjis_str = '([\x00-\x7F\xA1-\xDF])|([\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; #my $euc_str = '([\x00-\x7F]):([\x8E\xA1-\xFE][\xA1-\xFE])|(\x8F[\xA1-\xFE][\xA1-\xFE])'; my $sjis_str = '(?:[\x00-\x7F\xA1-\xDF] |(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]))'; my $euc_str = '(?:[\x00-\x7F] |(?:[\x8E\xA1-\xFE][\xA1-\xFE]) |(?:\x8F[\xA1-\xFE][\xA1-\xFE]) )'; my $utf8_str = '(?:[\x00-\x7F] |(?:[\xc2-\xdf][\x80-\xbf]) |(?:\xe0[\xa0-\xbf][\x80-\xbf]) |(?:[\xe1-\xef][\x80-\xbf][\x80-\xbf]) |(?:\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]) |(?:[\xf1-\xf3][\x80-\xbf][\x80-\xbf][\x80-\xbf]) |(?:\xf4[\x80-\x8f][\x80-\xbf][\x80-\xbf]) )'; if($arg ne ""){ if($arg =~ /($search_url_array{'google'}) |($search_url_array{'msn'}) |($search_url_array{'biglobe'}) |($search_url_array{'livedoor'})/sx){ #Google:q=UTF-8 or SJIS:as_q=もある #MSN:q=UTF-8 or SJIS #biglobe:q=EUC or SJIS #livedoor:q=EUC %decodeStrHash = &QuerySplitDecode($decodeStr); if($decodeStrHash{'q'} ne ""){ $decodeStr = $decodeStrHash{'q'}; }else{ $decodeStr = $decodeStrHash{'as_q'}; } }elsif($arg =~ /$search_url_array{'yahoo'}/){ #Yahoo:p=EUC %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'p'}; }elsif($arg =~ /$search_url_array{'infoseek'}/){ #infoseek:qt=EUC %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'qt'}; }elsif($arg =~ /$search_url_array{'excite'}/){ #excite:search=SJIS %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'search'}; }elsif($arg =~ /$search_url_array{'goo'}/){ #goo:MT=EUC %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'MT'}; }elsif($arg =~ /$search_url_array{'nifty'}/){ #nifty:Text=EUC or SJIS %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'Text'}; }elsif($arg =~ /$search_url_array{'aol'}/){ #AOL:query=SJIS %decodeStrHash = &QuerySplitDecode($decodeStr); $decodeStr = $decodeStrHash{'query'}; }else{ $decodeStr = ""; } #文字コード判別 if($decodeStr =~ /^($utf8_str)+$/sx){ #UTF-8 $decodeStr = &unicodeconv::utf2sjis($decodeStr); }else{ #SJISかEUC jcode::convert(\$decodeStr, 'sjis'); } $decodeStr =~ s//>/g; return $decodeStr; }else{ return ""; } } #referrer中から引数だけを取得し、URLデコードしてハッシュにする sub QuerySplitDecode{ my($buffer) = @_; my(@pairs, $pair, $name, $value, %query_split); $buffer = substr($buffer, index($buffer, "?") + 1); @pairs = split(/&/, $buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%(..)/pack("C", hex($1))/eg; $query_split{$name} = $value; } return %query_split; } #検索エンジン識別URLを返す sub GetSearchUrl{ return %search_url_array; } 1;
" . $arg[$i] . "
$arg-" . substr($url, 0, 40) . " [参照]ブックマーク、直接アクセス、etc横" . $width . "×縦" . $height . " [色" . $color . "bit]-$arg0