-1

我正在为我们学校开发一个在线法官(比如 topcoder/codeforces.com)。
但我不知道如何开始——如何使用 php 评估某人的 c++ 代码。
另请注意,代码将使用 c++ & 我需要提供一些存储在文件中的输入。
我在设计站点(在 php 中)和测试产生的输出方面没有问题。
如果我可以使用一些外部站点(我没有服务器,资金较少所以免费服务器!),那将是有利的。

谢谢你。-亚当

4

1 回答 1

1

最明显的方法是通过上传源的 system/exec 调用编译器。大概这是唯一的办法。我怀疑 PHP 是否存在 C++ 解析器/解释器(理论上可行,但非常复杂且毫无意义)。

如果您没有专用主机,这将很难做到,因为很可能每个主机提供商都在阻止对 system/exec 的调用,即使他们没有,您也无法访问编译器。

如果您不完全信任您的用户(您的同学可以破解),您还必须“沙盒”您从代码构建的应用程序。您需要确保没有人能够读取您的文件系统/删除文件/连接到数据库等。您可以通过以下一项或多项来做到这一点:

  • 仅授予对您信任的标头/库的封闭列表的访问权限(数学等)
  • 以仅为此目的创建的用户身份运行应用程序(最简单的解决方案)
  • 使用虚拟机
  • 等等

您可以检查:

从头开始创建在线法官

也许这会很有用:

https://github.com/anomit/loki

于 2013-02-05T16:39:28.093 回答