설치 방법은 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"; }