包含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