2024-10-10

This commit is contained in:
2024-10-10 12:56:56 +08:00
commit 7b347c848a
2648 changed files with 643965 additions and 0 deletions

66
web/download.php Normal file
View File

@@ -0,0 +1,66 @@
<?php
////////////////////////////Common head
require_once( './include/db_info.inc.php' );
if((!isset($OJ_DOWNLOAD))||!$OJ_DOWNLOAD){
$view_errors="Download Disabled!";
require("template/".$OJ_TEMPLATE."/error.php");
exit(0);
}
$sid=intval($_GET['sid']);
$name=basename($_GET['name'],".out");
$sql="select problem_id,contest_id,user_id from solution where solution_id=?";
$data=pdo_query($sql,$sid);
//var_dump($sql);
if(count($data)>0){
$row=$data[0];
$pid=$row[0];
$cid=$row[1];
$uid=$row[2];
if(!(isset($_SESSION[$OJ_NAME.'_'.'user_id']) && $uid == $_SESSION[$OJ_NAME.'_'.'user_id']
|| isset($_SESSION[$OJ_NAME.'_'.'administrator'])
)){
$view_errors="not your submission";
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 = "<h2> $MSG_NOIP_WARNING </h2>";
require("template/".$OJ_TEMPLATE."/error.php");
exit(0);
}
}
$infile="$OJ_DATA/$pid/$name.in";
$outfile="$OJ_DATA/$pid/$name.out";
$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();
}
?>