설치 방법은 http://noexists.tistory.com/193 참고
이 글은 정리되지 않은 글이다. (그렇다고 다른 글이 특별히 정리된 건 아니지만...)
파일로도 제출 받는 기능
submitpage.php의 form에 enctype="multipart/form-data" 넣는다.<script type="text/javascript">
function tg(bool) {
document.getElementById('source_file').disabled = !bool;
document.getElementById('source').disabled = bool;
}
</script>
<hr />
<input type="radio" name="source_sel" value="file" checked="true" onclick="tg(true)" /> Use a file <br />
<input type="hidden" name="MAX_FILE_SIZE" value="65536" />
<input type="file" id="source_file" name="source_file" /> <br />
<hr />
<input type="radio" name="source_sel" value="textarea" onclick="tg(false)" /> Use the textarea <br />
<textarea cols=80 rows=20 id="source" name="source" disabled="disabled"></textarea><br>
if ($_POST['source_sel']=='file') {
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . $user_id . "_" . basename($_FILES['source_file']['name']);
if (move_uploaded_file($_FILES['source_file']['tmp_name'], $uploadfile)) {
$source = file_get_contents($uploadfile);
// unlink($uploadfile);
} else {
require_once("oj-header.php");
echo "Upload error";
require_once("oj-footer.php");
exit(0);
}
} else {
$source=$_POST['source'];
if(get_magic_quotes_gpc())
$source=stripslashes($source);
}
/var/www/uploads 디렉토리도 만들어야한다. chown www-data도 해주고
소스 코드 다운로드 기능
downloadsource.php을 만든다.
showsource.php를 뜯어 고침.
하이라이트 기능 제거, htmlspecialchars 제거.
불필요한 것 최대한 제거.
헤더를 고쳐서 c 파일로 다운로드 되게 만들기.
줄바꿈 문자 수정.
소스코드 보는 링크 부분에 링크 추가.
status.php, problemstatus.php
기본적으로 자신의 결과만 보이게 함. (남의 결과를 보는 것을 막는 것은 아님)
source_browser는 다 보는 것이 기본
$user_id="";
if (isset($_GET['user_id'])){
$user_id=trim($_GET['user_id']);
if (is_valid_user_name($user_id) && $user_id!=""){
$sql=$sql."AND `user_id`='".$user_id."' ";
if ($str2!="") $str2=$str2."&";
$str2=$str2."user_id=".$user_id;
}else $user_id="";
} else {
if(! isset($_SESSION['source_browser'])) {
$user_id = $_SESSION['user_id'];
if (is_valid_user_name($user_id) && $user_id!=""){
$sql=$sql."AND `user_id`='".$user_id."' ";
if ($str2!="") $str2=$str2."&";
$str2=$str2."user_id=".$user_id;
}else $user_id="";
}
}
showsource.php
관리자에게는 제출 시간과 IP 정보가 보이게 바꿈. 카피 잡을 때 유용
if (isset($_SESSION['administrator'])) {
echo "\tIP: $row->ip\n";
echo "\tSubmission Time: $row->in_date\n";
}
