2012-01-26 41 views
-1

我一直在研究项目,使一个网站读取文件(c/C++文本文件)并编写写在其上的代码。基于Web的编译器

如何使用我的服务器上的编译器?

+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. 必须过滤用户输入
  2. C源代码可能会崩溃编译过程
  3. 输出的程序可能包含的代码是危险的,你的服务器。
1

在您的操作系统中使用编译器。例如,在Linux中,您可以使用gcc。您可以使用exec从PHP运行。

+0

请给我更多的细节! – Animesh

+0

你对什么感兴趣? 就我而言,您使用GCC进行C代码编译,而使用G ++进行C++。 GCC手册页 - http://linux.die.net/man/1/gcc。 当然,如果您的服务器在Windows上运行,则完全不同。您可以指定服务器操作系统作为开始,以获得更具体的答案。 – Arnthor

+0

其实我想整合我的网站,这是在PHP和C++编译和只需点击一下按钮,编写我上传的文本文件中编写的整个代码。我的网站上显示的唯一结果是它是正确还是不正确? – Animesh

0

PHP有system()exec()的功能。也许这些就是你要找的东西?