Allow_url_include是一种只允许从一个url进行include的方法


Allow_url_include is there a way to allow includes from just one url

allow_url_include是否有一种方法可以允许仅从一个Url进行包含。可能是使用Htaccess还是在PHP中?

否。要获取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的全部内容。如果其他人控制该文件,他们将能够在您的服务器上执行任意代码。不要让这种事发生。

为什么你需要它,你可以控制代码,你只需要在中使用一个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。

希望这能帮助