Codeigniter要求在控制器中使用_functions()
,以便没有人可以从url访问它们。现在,我有一个名为Profile
的控制器并且具有_remap()
函数,以便我可以以http://example.com/profile/asdf
的形式接受任何输入。所以,每当我调用url时,{{{ 1}}函数将_remap()
作为输入并对其进行处理
现在,对于特殊情况,我必须输入以下划线开头的名称。与asdf
类似,目前生成404,因为Codeigniter不允许在URL中的方法名称前面使用_。
如何克服这个问题?
答案 0 :(得分:1)
实际上Codeigniter有一个url验证函数,当它遇到url前面的下划线时会生成404。我刚刚破解了这个功能
在文件/system/core/Router.php
中,有一个名为_set_request()
的函数。它的第一行是
$segments = $this->_validate_request($segments);
我刚刚攻击了$ segments变量,用短划线( - )替换了所有下划线
$segments = $this->_validate_request(str_replace("_", "-", $segments));
在我的_remap()
函数中,将它们替换回来。这是没有调用的私人函数,我完成了我的工作。 :)