2012-01-26 2 views
-1

나는 프로젝트에서 작업하여 파일 (c/C++ 텍스트 파일)을 읽고 컴파일 된 코드를 컴파일하는 웹 사이트를 만들었습니다.웹 기반 컴파일러

내 서버에있는 컴파일러는 어떻게 사용할 수 있습니까?

+9

사이드 노트 : 사용자 입력에서 컴파일러를 시작할 때 몇 가지 보안 문제가 발생합니다. –

+2

[Codepad] (http://codepad.org/about)에서 어떻게 작동하는지 확인하십시오. – PeeHaa

+0

대안은 코드를 자바 스크립트와 같은 것으로 변환하여 클라이언트에서 실행하는 것입니다. 그리고 동일한 JavaScript로 번역기를 작성하고 클라이언트에서도 실행할 수 있습니다. 이점 : 처리해야 할 보안 문제가 적고 서버로드가 낮습니다. 단점 : 제한된 C 코드, 느린 "컴파일"및 실행. –

답변

3

$_POST['CODE']에 cpp 코드가 포함 된 경우. 다음을 수행 할 수 있습니다.

$code = do_sanitizing($_POST['CODE']); 
$filename = "cfile".time().".c"; 
// put the contents in a file 
file_put_contents($filename, $code); 
// compile it 
$output = system("/usr/bin/gcc $filename 2>&1"); 
echo $output; 

참고 : 컴파일하고 위험한 보안 결함을 가지고 이후에 프로그램을 실행하는 이러한 유형의. 당신은 컴파일 과정

  • 출력 프로그램이 서버에 위험한 코드를 포함 할 수 있습니다에게 충돌이 발생할 수 있습니다 사용자 입력
  • C 소스 코드를 소독해야한다

    1. .
  • 1

    OS에서 컴파일러를 사용하십시오. 리눅스에서는 gcc를 사용할 수 있습니다. exec을 사용하여 PHP에서 실행할 수 있습니다.

    +0

    좀 더 자세히 알려주세요 !! – Animesh

    +0

    관심있는 분야는 무엇입니까? 필자는 GCC for C++ 컴파일, G ++ for C++을 사용합니다. GCC 맨 페이지 - http://linux.die.net/man/1/gcc. 서버가 Windows에서 실행되는 경우 물론 완전히 다릅니다. 보다 구체적인 답변을 얻으려면 시작을위한 서버 OS를 지정할 수 있습니다. – Arnthor

    +0

    사실 PHP로 컴파일 된 내 웹 사이트와 C++ 컴파일러를 통합하고 싶습니다. 버튼 하나로 컴파일 된 업로드 된 텍스트 파일로 작성된 전체 코드를 클릭하십시오. 내 웹 사이트에 표시되는 유일한 결과는 정확한지 여부입니다. – Animesh

    0

    PHP는 system()exec()입니다. 아마 그게 당신이 찾고있는거야?