2011-07-31 11 views
6

我試圖用AJAX調用檢索頁面內容。我在頁面包裝中有一系列鏈接。當我點擊一個鏈接時,它會加載一個JavaScript函數,用於從php腳本中檢索頁面內容。在這種情況下,我正在開發我的localhost,但在生產中,腳本將與調用AJAX的文件位於相同的根文件夾和域中。我正在使用響應作爲div的內容。內容不純粹PHP,我的意思是,雖然它是由PHP生成它有HTML元素,如div s和跨度。它基本上是開啓和關閉車身標籤之間的東西。因此,我不確定我只能使用json_encode通過allow_url_include = 0在服務器配置中禁用包裝程序

而是在div內容加載中,我得到以下錯誤:

Warning: require_once() [function.require-once]: http:// wrapper is disabled in the server configuration by allow_url_include=0

allow_url_include讀了之後似乎這通常是默認禁用。我假設這個功能允許一些嚴重的網站攻擊。是這樣的。如果是這樣,我如何從其他文件中檢索內容?

我嘗試使用JQuery加載功能:

$('#content').load('pages/test_page.php'); 

但同樣的結果。

這讓我瘋狂! TIA。

編輯:我想我可能已經找到了問題; AJAX正在檢索內容的php文件正在使用require_once。它需要的文件位於同一個根文件夾中的同一臺服務器上,但它只有一個目錄。但是,這會產生一個新問題:我得到的內容,但不完全。例如,文件中我有這樣的:

Title: <?php echo $details['title']; ?> 

我只得到了第一個字母,這對於其他php內容,我echo如此。

回答

8

allow_url_include隻影響include()require(),你仍然可以使用PEAR HTTP_Request2模塊或curl功能來獲取網頁。

對遠程網頁使用include()被認爲是「不良做法」,並可能構成安全風險。例如,如果您使用include($var);和一些攻擊者設法與http://hacksite.tld他/她可以「注入」的代碼替換$ VAR ...

1

不用擔心,只要使用file_get_contents()然後寫在你的文檔的新文件,內容您已檢索,然後include該文件在您的文件中。您現在包含的文件已準備好進行任何更改,使用cssjavascript等。這基本上是一個包裝器。

-2

那是因爲您正在使用完整的網址。 請嘗試改爲:

$('#content').load('test_page.php'); 
相關問題