2012-01-26 10 views
-1

私はプロジェクトに取り組んでおり、ファイル(c/C++テキストファイル)を読み込んでコードをコンパイルするウェブサイトを作っています。ウェブベースのコンパイラ

私のサーバーにあるコンパイラはどのように使用できますか?

+9

サイドノート:ユーザー入力でコンパイラを起動すると、いくつかのセキュリティ上の問題が発生します。 –

+2

[Codepad](http://codepad.org/about)をチェックして、どのように動作しているかを確認してください。 – PeeHaa

+0

代わりに、コードをJavaScriptのようなものに翻訳してクライアント上で実行することもできます。また、同じ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; 

注:プログラムをコンパイルおよび実行のこのタイプは、その後の危険なセキュリティ上の欠陥を持っています。

  1. あなたは、Cのソースコードが出力プログラムがサーバーに危険であるコードが含まれている場合がありますコンパイル処理
  2. をクラッシュすることがあり、ユーザの入力
  3. をサニタイズしなければなりません。
1

ご使用のOSでコンパイラを使用してください。例えば、Linuxではgccを使うことができます。 execを使用してPHPから実行できます。

+0

詳細を教えてください!! – Animesh

+0

あなたは何に興味がありますか? 私が心配している限り、GCC for C++コンパイル、G ++ for C++を使用します。 GCCのmanページ - http://linux.die.net/man/1/gcc。 もちろん、サーバーがWindows上で動作している場合はまったく異なります。より具体的な回答を得るために、最初にサーバーOSを指定することができます。 – Arnthor

+0

実際に私はphpにある私のウェブサイトと、C++コンパイラを統合し、ただ一つのボタンでコンパイルすべきアップロードされたテキストファイルに書かれたコード全体をクリックしたい。私のウェブサイトに表示される唯一の結果は、それが正しいかどうかです。 – Animesh

0

PHPはsystem()exec()の機能を持っています。多分それらはあなたが探しているものですか?

関連する問題