包含CI文件最簡單的方法是什麼? 假設我想在example.com上包含http://example.com/ci/index.php/mycontroller/如何包含CodeIgniter生成的頁面?
example.com不運行CI,我不能包含('ci/index.php/mycontroller')。
包含CI文件最簡單的方法是什麼? 假設我想在example.com上包含http://example.com/ci/index.php/mycontroller/如何包含CodeIgniter生成的頁面?
example.com不運行CI,我不能包含('ci/index.php/mycontroller')。
正如我似乎無法調用CI控制器的功能,我決定這是最容易簡單地用jQuery加載頁面:
$('#myDiv').load('ci/index.php/mycontroller', {}, function(){
$('#myDiv #loading').hide();
$('#myDiv #data').slideDown(500);
});
假設你已經配置爲allow url includes PHP,只是......
include('http://example.com/ci/index.php/mycontroller/');
(需要PHP 4.3.0+)
取決於你想要做的輸出什麼,你應該能夠設置REQUEST_URI
或任何CI確定請求使用,然後只包括引導文件...
編輯:其實,我認爲這將是更好地圍繞走另一條路,如果」這是可能的(同樣,這取決於你想要做什麼 - 所以請告訴我們)。我的意思是創建一個簡單包含腳本的CodeIgniter控制器...
http://example.com/index.php是一個功能齊全的索引頁面。我想在CI中添加一小段代碼。問題是,我不能包含它direclty,因爲CI URL是動態的 - usr/local/public_html /.../ ci/index.php/mycontroller不存在作爲文件。 – Indrek
那麼,如果你直接訪問控制器文件,CodeIgniter會給你的文件...至少使用默認的重寫規則... – Franz
它會給我完整的功能嗎? 我可能沒有足夠清楚地表達,但我想要控制器加載的視圖文件的輸出。我的控制器擴展了Controller的功能test(){this-> load-> view('test_view'); } } 這將位於http://example.com/ci/index.php/mycontroller/test - 但我不能像這樣直接包含它:include('ci/index.php/mycontroller /測試'); – Indrek
如果您只需要顯示CI腳本的輸出,您可以打開URL,讀取內容並輸出它們,或者使用readfile()
。從CI應用程序的角度來看,請求將來自包含服務器(不是最終用戶),並且要傳遞Cookie /會話變量需要使用類似cURL的內容。
如果你真的想要包括源代碼,那是可能的,但是存在安全風險。有關於這個話題的幾個SO問題:
他們指出(除其他事項外),其包括你需要確保CI網站沒有源不執行頁面,而只是輸出php文件的內容,而實際上包含來自URL的代碼是非常危險的。
你基本上信任包含的站點(以及請求所經過的所有服務器),以提供包含服務器將毫無疑問地執行的(良好)代碼。
我嘗試過,但沒有奏效。猜猜我必須通過電子郵件發送我的託管服務提供商。 如果我包含這樣的內容,頁面配置項能夠讀取cookie或會話 - 它是否具有完整的功能,就像我直接從瀏覽器中加載它一樣? – Indrek
應該指出,這是相當可能的安全風險。 –
哦,檢查phpinfo()... allow_url_fopen打開,但由於某種原因它不加載。 如果我將URL硬編碼爲包含,是否存在安全風險? – Indrek