allow_url_include
有没有办法允许只包含一个网址。也许使用 Htaccess 或在 PHP 中?
问问题
6017 次
2 回答
1
否。要获取 URL 的内容,请使用file_get_contents()
. 然后,要将结果发送回等待的浏览器,只需使用echo()
.
$contents = file_get_contents('http://www.example.com/');
echo( $contents );
以上将要求您设置配置allow_url_fopen=1
(默认情况下已设置)。
如果您要使用include
,而不是我上面显示的方法,则会有一个主要区别:include
还执行它在获取的文档中找到的任何 PHP 代码。通常,除非您知道自己控制了所包含文档内容的 100%,否则允许这样做是一件非常危险的事情。
就是说:如果您确实想要与 完全一样的代码,include
则可以执行以下操作(这更安全,因为它只获取单个 URL,并且不需要您启用allow_url_include
)。
$contents = file_get_contents('http://www.example.com/');
eval('?>'.$contents);
如果您选择这样做,请确保您控制远程 URL 的全部内容。如果其他人控制该文件,他们将能够在您的服务器上执行任意代码。不要让这种情况发生。
于 2012-09-05T04:23:48.497 回答
0
那么为什么你需要它,你可以控制代码,你可以在包含时只使用一个 url。除了使用 allow_url_include 是非常危险的。如果你还想使用,你可以这样做。
制作自定义函数(粗略代码)
function url_include($url){
//now check if $url is the one you want to be included
if($url=="http://www.mysite.com/file.php"){
include($url);
}else{
//show error or something.
}
}
现在url_include("http://www.mysite.com/file.php");
在您的页面中使用它来包含 url。
希望这可以帮助
于 2012-09-05T03:50:42.680 回答