2012-09-05 66 views
0

allow_url_include有没有办法让包含来自一个Url。也许与Htaccess或在PHP?Allow_url_include有没有一种方法可以允许包括来自一个URL

+0

你能举一个具体的例子吗?我很困惑你如何使用'.htaccess'来实现你的愿望,因为'allow_url_include'似乎允许一台服务器上运行的PHP在'include'语句中访问另一个web服务器上的文件。 – HeatfanJohn

+0

只能输入一次include语句吗?仅仅因为你允许远程使用并不意味着他们会突然开始弹出你的颂歌。 – 2012-09-05 03:46:45

+0

不是。这是一个全或无的设置。它可以打开并且可以显示任何内容,或者关闭并且不允许任何内容。 –

回答

1

号要获取一个URL的内容,使用file_get_contents()。然后,将结果发送回等待的浏览器,只需使用echo()即可。

$contents = file_get_contents('http://www.example.com/'); 
echo($contents); 

以上将需要您设置配置allow_url_fopen=1(它已被默认设置)。


如果你使用include,而不是我上面的配置方法,将有一个重要区别:include执行发现所获取的文档中任何PHP代码。一般来说,除非您知道您控制了所包含文档的全部内容,否则这是一件非常危险的事情。

也就是说:如果你想要的作品酷似include代码,你可以这样做以下(这是安全的,因为它只取一个URL,它要求您启用allow_url_include)。

$contents = file_get_contents('http://www.example.com/'); 
eval('?>'.$contents); 

如果你选择这样做,可以肯定,你控制的远程URL的全部内容。如果其他人控制该文件,他们将能够在您的服务器上执行任意代码。不要让这种情况发生。

+0

我做的是控制文件我打电话 – 1ftw1

+0

我得到这个错误,做这个“ 解析错误:语法错误,意外的$结束在C:\ xampp \ htdocs \ usersPortal \ userportal.php(6):eval()'d代码在线88“ – 1ftw1

+0

@ 1ftw1:结果是不需要尾随的<?php,并且实际上导致问题。所以eval语句变成:'eval('?>'。$ contents);'。我已经在上面更新了我的答案。让我知道这是否解决了这个问题。 – Lee

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。

希望这有助于

+0

即时尝试保持allow_url_include关闭是安全的,但是从其他地方包括一个文件是否有更好的方式来做到这一点,然后使用包括? – 1ftw1

+0

@ 1ftw1,如果使用'file_get_contents'而不是? – WatsMyName

+0

@ 1ftw1如果你想能够动态获取它的内容:我所知道的没有什么。如果仅用于子文件夹的页面,则只需在该文件夹中包含.htaccess而不是根文件夹来启用它。 – Rhyono

相关问题