#!/usr/local/bin/perl # ###################################################################### ### ### ### CGI+JS逆リンク探知 T-Revlink Ver.2.01 ### [2/2] 表示 (trlshow.cgi) ### (c) 1996-2005 Takahiro Nishida ### http://www.mytools.net/ ### ### ###################################################################### # ### 変数設定部 (詳細は上記ページをご覧下さい) ###################### $basedir = "."; $backurl = "http://your.homepage/"; $code = "sjis"; ### 変数設定部 (ここまで)########################################### require "./jcode.pl"; $verno = "2.01"; &main; sub main{ &check_input; &show_header; &show_db; &show_footer; } ##### 入力チェック sub check_input{ $buffer = $ENV{'QUERY_STRING'}; if($buffer =~ /=/){ @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($vn, $value) = split(/=/, $pair); $F{$vn} .= $value; } $dbno = $F{'n'}; $sort = $F{'s'}; $search = $F{'k'}; } else{ ($dbno, $sort, $search) = split("-", $ENV{'QUERY_STRING'}); } $dbno = &decode($dbno); $sort = &decode($sort); $search = &decode($search); ($dbno) || ($dbno = 1); ($sort) || ($sort = "h"); } ##### ヘッダ sub show_header{ print "Content-type: text/html\n\n"; print "T-Revlink Log (No.$dbno)\n"; print ""; print "[Back]"; print "

REVERSE LINK List

"; print "Powered by T-Revlink Ver.$verno

"; print "数字画像の意味
0->成功. 1->ロック中. 2->DB番号が指定されていない.3->URLが取得できない. 4->URLが例外にひっかかった. 5->一時ファイルが作成できない. 6->DBファイルが開けない. 7->その番号のDBは存在しない.


\n"; print "
\n"; print "\n"; print "\n"; print "[DB No. $dbno] \n"; if($sort eq "t"){ print "[ヒット数順最終アクセス時刻順]\n"; } else{ print "[ヒット数順最終アクセス時刻順]\n"; } print "  "; print "検索(英数字のみ)\n"; print "
\n"; print "

\n"; } ##### DBの中身を表示 sub show_db{ unless(-f "$basedir/link-$dbno.dbf"){ print "DB番号 $dbno は登録されていない."; return; } ### ファイルを開く unless(open(FILE, "$basedir/link-$dbno.dbf")){ print "DBファイルが開けない(No.$dbno)"; return; } ### ハッシュに収める foreach(){ ($url, $hits, $time) = split("\t"); $DB{$url} = $hits; $LT{$url} = $time; } close(FILE); if($search){ $kwd = "、キーワード = $search

\n"; } $idx = "


[ヒット数] [最終アクセス時刻 年月日時分秒] URL
\n"; sub sortbyhits{ $DB{$b}<=>$DB{$a}; } sub sortbytime{ $LT{$b}<=>$LT{$a}; } if($sort eq "h"){ print "順番=ヒット数$kwd\n"; print "$idx

\n"; for(sort sortbyhits keys %DB){ ($_ =~ /%/) ? ($url = &decode($_)) : ($url = $_); (!$search) || ($url =~ /$search/) || next; $LT{$_} =~ s/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/$1\/$2\/$3\ $4:$5:$6/; print "[$DB{$_}] [$LT{$_}] $url
\n"; } } elsif($sort eq "t"){ print "順番=最終アクセス時刻$kwd\n"; print "$idx

\n"; for(sort sortbytime keys %DB){ ($_ =~ /%/) ? ($url = &decode($_)) : ($url = $_); (!$search) || ($url =~ /$search/) || next; $LT{$_} =~ s/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/$1\/$2\/$3\ $4:$5:$6/; print "[$DB{$_}] [$LT{$_}] $url
\n"; } } } ##### フッタ sub show_footer{ print "


"; } ##### 日本語デコード sub decode{ local ($org) = @_; $org =~ tr/+/ /; $org =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $org =~ s//>/g; &jcode'convert(*org, $code); $org; }