2009-12-01 54 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的代码是非常危险的。

你基本上信任包含的站点(以及请求所经过的所有服务器),以提供包含服务器将毫无疑问地执行的(良好)代码。

相关问题