⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 judge.cgi

📁 1。超强文件读写锁定
💻 CGI
字号:
#!/usr/bin/perl
$dirname=&mypath;
##################################################################
##                                                              ##
## 本版使用于WINDOWS和Unix/Linux等操作系统版                    ## 
##################################################################
require "$dirname/setup2002.pl";
require "$dirname/svote.lib";
&read_form;  
&GetCookies;
&Ursid;
$num=$FORM{'num'};
if($urspass ne $password){ &error("错误","你没权管理$id账号密码有错?");}
unless (-e "$usrpwdfile/$num.cgi"){ &error("错误","项目不存在!");}	
open(NUMBER,"$usrpwdfile/$num.cgi")|| &error("错误","项目不能打开!请稍后再试");
$NUM=<NUMBER>;  
close(NUMBER);
$NUM=~s/[\n\r]//g;
($l_num,$l_date,$l_lockid,$l_mode,$l_look,$years,$mons,$mdays,$hours,$mins,$l_pmax,$l_pmin,$l_total,$l_neat,$l_six,$l_pfs,$l_jfs,$l_top10,$l_newtop,$l_qh,$l_mail,$l_ly,$l_regk)=split(/\t/,$NUM);

if($action eq "new"){ &Prinhtml;}
else{ &showhtml;}
exit;
##
sub showhtml {	

	$sotpday="$years$mons$mdays$hours$mins";
	$newtime=$sotpday-$polltime;
	if($newtime > 0){ &error("错误","调查截止时间未到!无法进行计分<br>现在时间: $year/$mon/$mday $hour:$min"); }
	open(SIX,"$usrpwdfile/six.txt"); 
	@cksix=<SIX>;
	close(SIX);
	$sixsize=@cksix;
	$sixqh=@cksix[0];
	$sixqh=~s/[\n\r]//g;
	if(($l_total)||($l_six eq "no")||($l_pfs eq "")||($l_jfs eq "")||($l_qh eq "")){ &error("错误","本题项目第$sixqh期不能评分或已评过分!");}
	if($l_qh != $sixqh){ &error("错误","本主题评分期号“$l_qh”与[评分资料]期号“$sixqh”不同,如要新的评分,请更新[输入评分资料]");}
	unlink("$usrpwdfile/top$num/temp.dat");
	open(NUM,"$usrpwdfile/$num/name.cgi"); 
	@ndat=<NUM>;
	$end=@ndat;
	close(NUM);
	open(COCO,"$usrpwdfile/$num/$num.cgi"); 
	@nums=<COCO>;
	close(COCO);
	for ($i=0;$i<$end;$i++) {
		$tpm="";
		$jfs_size="0";	
		$pollname=@ndat[$i];
		$pollname=~s/\n//g;
		($pname,$ipdata,$pollsh)=split(/\t/,$pollname);
		@pollsh = split(/ /,$pollsh);
		$pollsize=@pollsh;
			foreach $num(@nums) {
				$num=~s/[\r\n]//g;
				($sh,$pollname)=split(/\t/,$num);
					foreach $pollsh1(@pollsh) {
					if($sh==$pollsh1){ $tpm .="BBC$l_six$pollname, ";} #投入名稱
					}

			}	
			for ($si=1;$si<$sixsize;$si++) {
				$psix=@cksix[$si];
				$psix=~s/[\n\r]//g;
				if($psix ne ""){
				$psix1="BBC$psix, ";
				if($tpm=~/$psix1/){ $jfs_size++;} #查對錯
				}				
			}
		open(TOPNAME,"$usrpwdfile/top$num/$pname"); 
		@TOPNAME=<TOPNAME>;
		close(TOPNAME);
		if($l_top10=="2"){   ###分数
			$topname2=@TOPNAME[0];
			$topname2=~s/[\r\n]//g;
			($urszf,$ursbf)=split(/\(/,$topname2);
			$ursbf=~s/[\(\)]//g;
			if($ursbf eq ""){$ursbf="0";}
			if($urszf eq ""){$urszf="0";}
		}
		if($l_jfs=="1"){ #免扣累加
			if($jfs_size){	$bcdf=($l_pfs)*($jfs_size);$zgdf=($bcdf)+($urszf);}
			else{$bcdf=0; $zgdf=$urszf;}
		}
		elsif($l_jfs=="2"){ #免扣不累 
			if($jfs_size){ $bcdf=$l_pfs; $zgdf=($bcdf)+($urszf);}
			else{$bcdf=0; $zgdf=$urszf;}
		}
		elsif($l_jfs=="3"){ #要扣项数得分 
			$bcdf=($l_pfs)*($pollsize);
			if($jfs_size){ $zgdf=($bcdf)+($urszf);}
			else{ $zgdf=($urszf)-($bcdf); $bcdf=-($bcdf);}

		}
		elsif($l_jfs=="4"){ #相抵消 
			$hh=($pollsize)-($jfs_size);#不命中次
			$hh1=($jfs_size)-($hh);#抵后次
			$bcdf=($hh1)*($l_pfs);
			$zgdf=($bcdf)+($urszf);
		}
		else{$bcdf=0; $zgdf=0;}

		if($bcdf >0){ $urshit++; $tophit="★"; }
		elsif($bcdf < 0){ $tophit="☆"; }
		else{ $tophit="≡"; }
		open(TEMP,">>$usrpwdfile/top$num/temp.dat"); #本期参投者
		print TEMP "$pname\n";
		close(TEMP);
		if($l_top10=="1"){   ###符号
			$topname1=@TOPNAME[0];
			$topname2=@TOPNAME[1];
			$topname1=~s/[\n\r]//g;
			$topname2=~s/[\n\r]//g;
			if($topname1 eq ""){$topname1="0";}
			if($bcdf >0){ $topname1++;}
			open(TOPNAME1,">$usrpwdfile/top$num/$pname"); 
			print TOPNAME1 "$topname1\n$topname2,$tophit";
			close(TOPNAME1);
		}
		elsif($l_top10=="2"){ ##分数
			open(TOPNAME1,">$usrpwdfile/top$num/$pname"); 
			print TOPNAME1 "$zgdf($bcdf)\n";
			print TOPNAME1 @TOPNAME;
			close(TOPNAME1);
		}
	}

	open(NUMBER,">$usrpwdfile/$num.cgi");
	print NUMBER"$l_num\t$l_date\t$l_lockid\t$l_mode\t$l_look\t$years\t$mons\t$mdays\t$hours\t$mins\t$l_pmax\t$l_pmin\t$l_total\t$l_neat\t$l_six\t$l_pfs\t$l_jfs\t$l_top10\t$l_newtop\t$noqh\t$l_mail\t$l_ly\t$l_regk";
	close(NUMBER);
		open(TEMP2,"$usrpwdfile/top$num/temp.dat"); #
		@bqname=<TEMP2>;
		close(TEMP2);
	opendir(MEMBERDIR, "$usrpwdfile/top$num");
	@hastitles=readdir(MEMBERDIR);
	closedir(MEMBERDIR);
	 foreach $m(@hastitles){
	   if($m !~/\.dat/){
				$ursin="";
				foreach $mm(@bqname){
					$mm=~s/[\n\r]//g;
					if($mm eq "$m"){ $ursin="ok";}
				 }
		if(!$ursin){
			open(NONAME,"$usrpwdfile/top$num/$m"); 
			@NONAME=<NONAME>;
			close(NONAME);	
			$tname1=@NONAME[0];
			$tname2=@NONAME[1];
			$tname1=~s/[\r\n]//g;
			if($l_top10=="1"){   ###符号
				$tname2=~s/[\r\n]//g;
				open(NONAME1,">$usrpwdfile/top$num/$m"); 
				print NONAME1 "$tname1\n$tname2,□";
				close(NONAME1);
			}
			elsif($l_top10=="2"){ ##分数
				($n1,$n2)=split(/\(/,$tname1);
				if($n1 !~/^([0-9\-]*)$/){$n1="0";}
				if($n1 eq ""){$n1="0";}
				open(NONAME1,">$usrpwdfile/top$num/$m"); 
				print NONAME1 "$n1(□)\n";
				print NONAME1 @NONAME;
				close(NONAME1);
			}
		}
	   }
	}

unlink("$usrpwdfile/top$num/temp.dat");
open(TOPDAT,"$usrpwdfile/top$num/top10.dat");
$TOP10=<TOPDAT>;
close(TOPDAT);
open(DAT,">$usrpwdfile/top$num/top10.dat");
print DAT"$TOP10,□";
close(DAT);
open(TOPQHDAT,"$usrpwdfile/top$num/topqh.dat");
@TOPQH=<TOPQHDAT>;
close(TOPQHDAT);
open(DAT1,">$usrpwdfile/top$num/topqh.dat");
print DAT1"$sixqh\n";
print DAT1 @TOPQH;
close(DAT1);
&Prinhtml;
&Header;
print qq~<p>第<b>$sixqh</b>期次的“$l_num”评分已完成<p>前十名链接代码:<INPUT class=form size=100 value="<script src=$CONFIG{'cgi_url'}/$FILE{'poll'}/$id/top$num/top10.txt></script>" ><p><a href=$CONFIG{'cgi_url'}/$FILE{'poll'}/$id/$num.html>查看排行榜</a>~;
}
##########
sub Prinhtml{
	open(LISTDAT,"$usrpwdfile/top$num/topqh.dat");
	@qhlist=<LISTDAT>;
	close(LISTDAT);
	$qhmax=@qhlist;
	$qhmax--;
	opendir(NAMEDIR, "$usrpwdfile/top$num");
	@topname=readdir(NAMEDIR);
	closedir(NAMEDIR);
	foreach $topname(@topname){
	   	  if($topname !~/\./){
			open(LISTNAME,"$usrpwdfile/top$num/$topname");
			@namelist=<LISTNAME>;
			close(LISTNAME);
					$top10_dat=@namelist[0];
					$top10_dat=~s/[\r\n\s]//g;
					$m="$top10_dat\t$topname\n";
					push(@top10,$m);
		}
	}
	@top10 = (sort { $b <=> $a } @top10); 

	if(($qhmax <4)&&($qhmax >0)){$wid="110";}
	elsif(($qhmax >3)&&($qhmax <7)){$wid="80";}
	elsif(($qhmax >6)&&($qhmax <11)){$wid="60";}
	elsif(($qhmax >10)&&($qhmax <15)){$wid="45";}
	else{$wid="30";}

open(OUTHTML,">$usrpwdfile/$num.html");
print OUTHTML <<Header;
<html><head><title>-$l_num-榜行榜</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="Description" content="互动调查,免费调查引擎"><meta name="Keywords" content="互动调查,调查,引擎调查,投票,免费调查,vote,research">
<LINK REL=stylesheet HREF="$imgurl/styles.css"  TYPE=text/css>
</head><base onmouseover="window.status='$CONFIG{'vote'}—互动调查,免费调查引擎';return true">
<body bgcolor=#FFFFF0 background=$CONFIG{'img_url'}/vote3.gif>
<center><H2>$l_num 榜行榜</H2>
Header
	if($l_top10=="1"){
		print OUTHTML"<table border=1 width=500 cellSpacing=0 cellPadding=0 bgColor=#FFFFF0><tr align=center bgColor=#77A4FF height=25><td width=120>参投者<td width=60>得分<td>详 细(更新时间:$logtime)</td></tr>\n";
	}
	elsif($l_top10=="2"){
			$qhmax1="0";
		print OUTHTML"(更新时间:$logtime)<br><table border=1 cellSpacing=0 cellPadding=0 bgColor=#FFFFF0><tr align=center bgColor=#77A4FF height=25><td width=100>参投者";
			for ($j=$qhmax;$j>-1;$j--) {
				$qh_1=@qhlist[$j];
				$qh_1=~s/[\n\r]//g;
				if($qh_1 ne ""){$qhmax1++; print OUTHTML"<td width=$wid>$qh_1";}
			}
	}
	close(OUTHTML);
	#opendir(NAMEDIR, "$usrpwdfile/top$num");
	#@topname=readdir(NAMEDIR);
	#closedir(NAMEDIR);
	foreach $topda(@top10){
		$topda=~s/[\r\n]//g;
		($so,$topname)=split(/\t/,$topda);
	   	  #if($topname !~/\./){
			open(LISTNAME,"$usrpwdfile/top$num/$topname");
			@namelist=<LISTNAME>;
			close(LISTNAME);
				if($l_top10=="1"){
					$name_dat=@namelist[0];
					$name_top=@namelist[1];
					$name_dat=~s/\n//g;
					$name_top=~s/[\n\,]//g;
					open(HTMLMA,">>$usrpwdfile/$num.html");
					print HTMLMA "<tr><td align=center>$topname<td align=center>$name_dat<td>$name_top";
					close(HTMLMA);
				}
				elsif($l_top10=="2"){
					$qhmax2=$qhmax1-1;
					open(HTMLMA,">>$usrpwdfile/$num.html");
					print HTMLMA "<tr align=center><td>$topname";
					for ($ij=$qhmax2;$ij>-1;$ij--) {
						$qh_2=@namelist[$ij];
						$qh_2=~s/[\n\r]//g;
						if(!$qh_2){$qh_2="□(□)";}
						$qh_2=~s/\(/<br>\(/g;
						print HTMLMA"<td>$qh_2";
					}
					close(HTMLMA);
				 # }
		}
	}
open(OUTHTML,">>$usrpwdfile/$num.html");
print OUTHTML <<Header;
</table><table border="0" width="100%"><TR align="center"><TD>服务:《<a href=$CONFIG{'url'}>$CONFIG{'vote'}</a>》&nbsp;&nbsp;&nbsp;&nbsp;编程:&copy;<a href=http://hk666b.126.com>CK联合小组</a></table></BODY></HTML>
Header
close(OUTHTML);

	$topi=@top10;			##前10名
	if($topi > 10){$topi="10";}
		for ($ti=0; $ti<$topi; $ti++) { 
		$topda2=@top10[$ti];
		$topda2=~s/[\r\n\"]//g;
		($so2,$topname2)=split(/\t/,$topda2);
		$so2=~s/\(.+?\)//g;
		$so2=~s/[\(\)]//g;
		$topcode .="<tr><td>$topname2</td><td align=center>$so2</td></tr>";
	}
	open(TOPCODE,">$usrpwdfile/top$num/top10.txt");
	print TOPCODE qq~document.write("<table border=0 cellpadding=1 cellspacing=1 width=95%><tr align=center><td>网 名</td><td>成 绩</td></tr>$topcode</table>");~;
	close(TOPCODE);
	if($action eq "new"){
	&Header;
	print qq~<p>第<b>$sixqh</b>期次的“$l_num”排行榜已重新生成<p>前十名链接代码:<INPUT class=form size=100 value="<script src=$CONFIG{'cgi_url'}/$FILE{'poll'}/$id/top$num/top10.txt></script>" ><p><a href=$CONFIG{'cgi_url'}/$FILE{'poll'}/$id/$num.html>查看排行榜</a>~;
	}
}
############
sub mypath {
	$dirname=__FILE__;
	if ($dirname=~/\\/) { $dirname=~ s/\\/\//g;}
	if ($dirname) {$mypath=substr($dirname,0,rindex($dirname,"/"));}
		else {
		$mypath=substr($ENV{'PATH_TRANSLATED'},0,rindex($ENV{'PATH_TRANSLATED'},"\\"));
		$mypath=~ s/\\/\//g;
		}
}

	exit;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -