2009-12-01 90 views

回答

3

正如我似乎無法調用CI控制器的功能,我決定這是最容易簡單地用jQuery加載頁面:

$('#myDiv').load('ci/index.php/mycontroller', {}, function(){ 
     $('#myDiv #loading').hide(); 
     $('#myDiv #data').slideDown(500); 
}); 
1

假設你已經配置爲allow url includes PHP,只是......

include('http://example.com/ci/index.php/mycontroller/'); 

(需要PHP 4.3.0+)

+0

我嘗試過,但沒有奏效。猜猜我必須通過電子郵件發送我的託管服務提供商。 如果我包含這樣的內容,頁面配置項能夠讀取cookie或會話 - 它是否具有完整的功能,就像我直接從瀏覽器中加載它一樣? – Indrek

+0

應該指出,這是相當可能的安全風險。 –

+0

哦,檢查phpinfo()... allow_url_fopen打開,但由於某種原因它不加載。 如果我將URL硬編碼爲包含,是否存在安全風險? – Indrek

0

取決於你想要做的輸出什麼,你應該能夠設置REQUEST_URI或任何CI確定請求使用,然後只包括引導文件...

編輯:其實,我認爲這將是更好地圍繞走另一條路,如果」這是可能的(同樣,這取決於你想要做什麼 - 所以請告訴我們)。我的意思是創建一個簡單包含腳本的CodeIgniter控制器...

+0

http://example.com/index.php是一個功能齊全的索引頁面。我想在CI中添加一小段代碼。問題是,我不能包含它direclty,因爲CI URL是動態的 - usr/local/public_html /.../ ci/index.php/mycontroller不存在作爲文件。 – Indrek

+0

那麼,如果你直接訪問控制器文件,CodeIgniter會給你的文件...至少使用默認的重寫規則... – Franz

+0

它會給我完整的功能嗎? 我可能沒有足夠清楚地表達,但我想要控制器加載的視圖文件的輸出。我的控制器擴展了Controller的功能test(){this-> load-> view('test_view'); } } 這將位於http://example.com/ci/index.php/mycontroller/test - 但我不能像這樣直接包含它:include('ci/index.php/mycontroller /測試'); – Indrek

0

如果您只需要顯示CI腳本的輸出,您可以打開URL,讀取內容並輸出它們,或者使用readfile()。從CI應用程序的角度來看,請求將來自包含服務器(不是最終用戶),並且要傳遞Cookie /會話變量需要使用類似cURL的內容。

如果你真的想要包括源代碼,那是可能的,但是存在安全風險。有關於這個話題的幾個SO問題:

他們指出(除其他事項外),其包括你需要確保CI網站沒有源不執行頁面,而只是輸出php文件的內容,而實際上包含來自URL的代碼是非常危險的。

你基本上信任包含的站點(以及請求所經過的所有服務器),以提供包含服務器將毫無疑問地執行的(良好)代碼。

相關問題