#!/usr/bin/perl #****************************************************************************** #rl_out.cgi - Ranking Link Ver.1.86 # #Version :1.86 #modified :2002/01/31 #Copyright :The Room #E-Mail :dream@lib.net #URL :http://dream.lib.net/ # #これはフリー素材です。 #転載・商用目的の利用の際には、メールをお願いします。 # #****************************************************************************** #1行目のperlのディレクトリ指定は、サーバによって異なります。 #詳しくは、管理者にお聞きください。 #****************************************************************************** require './rl_prf.cgi'; require $jcode; #データ受け取り $cl = $ENV{"CONTENT_LENGTH"}; if( $cl > 0 ){ read(STDIN, $qs, $cl ); }else{ $qs = $ENV{"QUERY_STRING"}; } @contents = split(/&/,$qs); foreach $i (0 .. $#contents) { local($key,$text)= split(/=/,$contents[$i]); $text =~ s/\+/ /g; $text =~ s/%(..)/pack("c",hex($1))/ge; &jcode::convert(\$text,'sjis'); $id = $text if $key eq 'id'; $url = $text if $key eq 'url'; } if (!-e "$datadir/$id.dat"){ &error("ID:$idは登録されていません。"); } if (&filelock(1)){ open (IN,"$rankfile"); eval{flock(IN,2)}; $a1=;$a1=;@rankset=split(/<>/,scalar()); close(IN); &rankout; } if ($metajump){ &metaindi($url); }else{ print "Location: $url\n\n"; } exit; #***************************************************************************** sub rankout{ #OUTカウント追加 my $voteflag = 1; my ($a1,@temp1); if ($cookiecheck){ &getcookie; $a1 = "<>".$cookie{'OUT'}; if ($a1 =~ /<>$id<>/){ $voteflag = 0; }else{ $cookie{'OUT'}.= $id."<>"; &setcookie; } } if (($voteflag) && ($ipcheck)){ open(IO,"+<$ipdir/$id.dat"); eval{flock(IO,2)}; while(){ if ($_ =~ /out<>$ip<>\n/){ $voteflag = 0; last; }else{ push(@temp1,$_); } } if ($voteflag){ truncate(IO,0); seek(IO,0,0); print IO "out<>$ip<>\n"; print IO @temp1; } close(IO); } if ($voteflag){ open (IO,"+<$datadir/$id.dat"); eval{flock(IO,2)}; @temp1 = split(/<>/,); @temp1 = split(/<>/,&backupload($id)) if $temp1[0] eq ""; if ($temp1[0] ne "datamissing"){ #$temp1[0] = time(); $temp1[11]++; $temp1[13]++; $temp1[15]++; truncate(IO,0); seek(IO,0,0); foreach(@temp1){print IO $_."<>";} close(IO); }else{ close(IO); &syslog("AUTO","データ消失(ID:$id)"); &dataerase($id); } } if ($rankset[6] < time()){ require './rl_renew.cgi'; &syslog("AUTO","自動更新"); } &fileunlock; } #******************************************************************************