重新映射的函数以Codeigniter中的Underscore开头

时间:2011-07-10 20:55:49

标签: php codeigniter

Codeigniter要求在控制器中使用_functions(),以便没有人可以从url访问它们。现在,我有一个名为Profile的控制器并且具有_remap()函数,以便我可以以http://example.com/profile/asdf的形式接受任何输入。所以,每当我调用url时,{{{ 1}}函数将_remap()作为输入并对其进行处理 现在,对于特殊情况,我必须输入以下划线开头的名称。与asdf类似,目前生成404,因为Codeigniter不允许在URL中的方法名称前面使用_。

如何克服这个问题?

1 个答案:

答案 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()函数中,将它们替换回来。这是没有调用的私人函数,我完成了我的工作。 :)