2012-09-05 65 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

相關問題