#!/usr/bin/perl #======================================================================================= # BANNER LINK SYSTEM Version 1.7 # Script by HAL # Last Update 2005.08.31 #======================================================================================= require 'preset.cgi'; require 'sub.pl'; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } else { $formdata = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$formdata); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\n//g; $value =~ s/\,//g; $QUERY{$name} = $value if ($name !~ /^up/); } $QUERY{'seq'} =~ s/\D//g; if($QUERY{'url'} ne ""){ &make_rank($QUERY{'url'}); } if($QUERY{'mode'} eq ""){ $QUERY{'mode'} = 'index'; } # ジャンルタイトル決定 $i = 0; $jtitle = 'Attention'; foreach $modew (@junle_code) { if($QUERY{'mode'} eq $modew){ $jtitle = $junle_str[$i]; } $i++; } &html; #===============================表示HTMLドキュメントを生成=========================== sub html { open(PRE,"$design_file") || &error('FILE OPEN ERROR - design'); @htmls =
; close(PRE); $html = ""; foreach (@htmls) { $html .= $_; } ($dhead,$heads,$dfoot) = split(//, $html); if($QUERY{'mode'} eq "index"){ open(IND,"$index_file") || &error('FILE OPEN ERROR - index'); @htmls =; close(IND); $html = ""; foreach (@htmls) { $html .= $_; } }else{ if($QUERY{'num'} ne ""){ $num = $QUERY{'num'}; } else{ $num = 0; } $next_num = $num + $pmax; $html = $dhead .'' .$dfoot; ($dhead,$sheet,$dfoot) = split(//, $html); ($shead,$tsheet,$sfoot) = split(//, $sheet); if($QUERY{'mode'} eq "rank"){ $log_file = $rank_file; } open(LOG,"$log_file") || &error('FILE OPEN ERROR - log'); @logs = ; close(LOG); # ソート処理 if($sort_ck == 2 || $sort_ck == 3){ @sortw = (); foreach (@logs) { ($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_); push(@sortw,"$seq<>$site_namek<>$site_name<>$cnt<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n"); } if($sort_ck == 2){ @sorted = sort { $b <=> $a } @sortw; } else{ @sorted = sort { $a <=> $b } @sortw; } @logs = (); foreach (@sorted) { ($seq,$site_namek,$site_name,$cnt,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_); push(@logs,"$cnt<>$seq<>$site_name<>$site_namek<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n"); } }elsif($sort_ck == 1){ @logs = reverse @logs; } $prev = ""; $i = 0; $j = 0; $sf = 0; foreach (@logs) { ($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_); if($bn_url eq ""){ $bn_url = $bn_dir .$nb_img; } elsif(!($bn_url =~ /http:/)){ $bn_url = $bn_dir .$bn_url; } $url = $view_cgi .'?url=' .$seq; $linkb = " "; if($QUERY{'mode'} eq "rank"){ $f = 1; $i++; }else{ @janrus = split("##",$janru); $f = 0; foreach $value (@janrus) { if($value eq $QUERY{'mode'}){ $f = 1; $i++; last; } } } if($f == 1){ if($pmax == 0 || ($j >= $num && $j < $next_num)){ $tsheetw = $tsheet; if($QUERY{'mode'} eq "rank"){ $tsheetw =~ s//[ $cnt ]/g; } elsif($cnt >= time()-60*60*24*$new_day){ # NEWマーク処理 $tsheetw =~ s//
/g; } $tsheetw =~ s//$site_name/g; $tsheetw =~ s//$ad_name/g; $tsheetw =~ s//$comm/g; $tsheetw =~ s//$url/g; $tsheetw =~ s//$linkb/g; $sf++; if($sf == 1){ $prev .= $shead; } $prev .= $tsheetw; if($sf == $table_su){ $prev .= $sfoot; $sf = 0; } } $j++; } } if($sf != $table_su && $sf != 0){ $tsheet =~ s//No DATA/g; $tsheet =~ s//No DATA/g; while($sf < $table_su){ $prev .= $tsheet; $sf++; } $prev .= $sfoot; } $html = $dhead .$prev .$dfoot; } $page = ""; if($pmax != 0){ $iw = 0; $p = $i / $pmax; while($iw < $p){ $iww = $iw + 1; $numw = $iw * $pmax; if($num == $numw){ $page .= "[$iww] "; } else{ $page .= "[$iww] "; } $iw++; } }else{ $page .= "[ALL]"; } $html =~ s//$j/g; $html =~ s//$page/g; $html =~ s//$heads/g; $html =~ s//$view_cgi/g; $html =~ s//$jtitle/g; $html =~ s//$admin_cgi/g; $html =~ s//$systeminfo/g; print "Content-Type: text/html\n\n"; print "\n"; print $html; exit; } #=============================== ランキング処理 =========================== sub make_rank{ $urlw = $_[0]; # ロック開始 if ($lockkey == 1) { &lock1; } elsif ($lockkey == 2) { &lock2; } open(RNK,"$rank_file") || &error('FILE OPEN ERROR - log'); @ranks =
; close(RNK); open(LOG,"$log_file") || &error('FILE OPEN ERROR - log'); @logs = ; close(LOG); $f = 0; foreach (@logs) { ($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_); if($urlw == $seq){ $f = 1; last; } } if($f != 1){ &error('リンク先は登録されていません'); } $f = 0; @newrlogs = (); foreach (@ranks) { ($cntr,$seqr,$site_namer,$site_namekr,$ad_namer,$commr,$urlr,$bn_urlr,$janrur) = split(/<>/, $_); if($seq == $seqr){ $cntr++; $f = 1; } push(@newrlogs,"$cntr<>$seqr<>$site_namer<>$site_namekr<>$ad_namer<>$commr<>$urlr<>$bn_urlr<>$janrur<>\n"); } if($f != 1){ push(@newrlogs,"1<>$seq<>$site_name<>$site_namek<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n"); } @sorted = sort { $b <=> $a } @newrlogs; open(OUT,">$rank_file") || &error('FILE OPEN ERROR - rank'); print OUT @sorted; close(OUT); &unlock; # ロック解除 # リロード処理 print "Location: $url\n\n"; exit; }