我正在尝试执行cURL查询返回的代码。
以下代码查询我的网络服务器上的页面:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.php");
curl_setopt ($ch, CURLOPT_HEADER, 0);
$res = curl_exec ($ch);
curl_close ($ch);
echo $res;
我想通过修改foo.php中的代码来实现。 我尝试使用eval()命令在foo.php中返回PHP代码,但它似乎不起作用。
有什么想法吗?
编辑:伙计们,我不是这样做的公共网站。这是一个私人项目,我将是唯一的用户。我知道这是一个巨大的安全问题,我永远不会做这样的事情会在互联网上生活。
答案 0 :(得分:2)
免责声明:这对安全性来说是一个糟糕的想法,你不应该这样做。
那说
allow_url_fopen
选项,或使用ini_set include "http://web.com/foo.php"
现在,重申一下,除非你对自己非常肯定,否则不要这样做,或者你真的想让你的网站被黑了。
答案 1 :(得分:1)
请注意,eval
不需要前导<?php
。
eval
的替代方法是将代码写入文件,然后包含所述文件。
另外,请确保将CURLOPT_RETURNTRANSFER
选项设置为true,否则,您可能只显示代码。
答案 2 :(得分:1)
免责声明:这是一个令人难以置信的想法。我强烈建议您使用其他方法。
我猜你的服务器正在解释服务器的文件,所以你得到PHP解析响应。尝试将它们重命名为.phtml
之类的其他内容。或者在远程服务器上关闭PHP。那么它应该只是一个问题:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.phtml");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec ($ch);
curl_close ($ch);
$parsed = eval($res);
// echo or do whatever with $parsed
但正如我在我的免责声明中所说的那样,每个评论回答这个问题的人都说过......这是一种安全风险,甚至超出了各种各样的问题。如果你详细说明你为什么要这样做,我们可能会找到一个更好的解决方案,不会让Jon Skeet哭。