0){ $row=$data[0]; $pid=$row[0]; $cid=$row[1]; $uid=$row[2]; $result_code=intval($row[3]); $is_admin=isset($_SESSION[$OJ_NAME.'_'.'administrator']); if(!(isset($_SESSION[$OJ_NAME.'_'.'user_id']) && strval($uid) === strval($_SESSION[$OJ_NAME.'_'.'user_id']) || $is_admin )){ $view_errors="not your submission"; require("template/".$OJ_TEMPLATE."/error.php"); exit(0); } if(!$is_admin){ $diff_disabled=isset($OJ_SHOW_DIFF) && !$OJ_SHOW_DIFF; $spj_rows=pdo_query("select spj from problem where problem_id=?",$pid); $hidden_spj=!empty($spj_rows) && $spj_rows!==-1 && intval($spj_rows[0][0])===2 && !empty($OJ_HIDE_RIGHT_ANSWER); $runtime_info=""; $allowed_testcases=array(); if($result_code===5 || $result_code===6){ $runtime_rows=pdo_query("select error from runtimeinfo where solution_id=?",$sid); $runtime_info=(!empty($runtime_rows) && $runtime_rows!==-1) ? $runtime_rows[0][0] : ""; $allowed_testcases=llm_guidance_diff_testcase_names($runtime_info); if(isset($OJ_DL_1ST_WA_ONLY) && $OJ_DL_1ST_WA_ONLY){ $allowed_testcases=array_slice($allowed_testcases,0,1); } } $authorized_testcase=in_array($name,$allowed_testcases,true); $unsafe_full_diff=llm_guidance_has_full_diff_sections($runtime_info); if($diff_disabled || $hidden_spj || $unsafe_full_diff || ($result_code!==5 && $result_code!==6) || !$authorized_testcase){ $view_errors="当前提交或测试点未获授权,暂不提供测试数据下载。"; require("template/".$OJ_TEMPLATE."/error.php"); exit(0); } } if(isset($OJ_NOIP_KEYWORD)&&$OJ_NOIP_KEYWORD){ $now = date('Y-m-d H:i', time()); $sql = "select 1 from `contest` where contest_id=? and `start_time` < ? and `end_time` > ? and `title` like ?"; $rrs = pdo_query($sql, $cid ,$now , $now , "%$OJ_NOIP_KEYWORD%"); $flag = count($rrs) > 0 ; if($flag){ $view_errors = "

$MSG_NOIP_WARNING

"; require("template/".$OJ_TEMPLATE."/error.php"); exit(0); } } $infile="$OJ_DATA/$pid/$name.in"; $outfile="$OJ_DATA/$pid/$name.out"; if(!is_file($infile) || !is_file($outfile)){ $view_errors="测试点文件不存在。"; require("template/".$OJ_TEMPLATE."/error.php"); exit(0); } $zipname = tempnam(__dir__.'/upload', ''); $zip = new ZipArchive(); if ($zip->open($zipname, ZIPARCHIVE::CREATE) !== TRUE) { exit ('无法打开文件,或者文件创建失败'); } $files = [ $infile,$outfile ]; $zip->open($zipname, ZipArchive::CREATE); foreach ($files as $file) { $fileContent = file_get_contents($file); $file = iconv('utf-8', 'GBK', basename($file)); $zip->addFromString($file, $fileContent); } $zip->close(); header('Content-Type: application/zip;charset=utf8'); header('Content-disposition: attachment; filename='.$name. date('Y-m-d') . '.zip'); header('Content-Length: ' . filesize($zipname)); readfile($zipname); unlink($zipname); die(); } ?>