我正在尝试在Codeigniter中建立一个分页搜索,并希望得到一些帮助。
到目前为止,我已经意识到我不能同时使用两个url段和查询字符串。仅使用查询字符串会产生非常难看的URL。
我知道Codeigniter会破坏GET,而我正试图将其重新插入.Ergo ...如果我把它放在搜索控制器的构造函数中,我的问题会解决吗?
parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET);
同样,如果它对我有用,我还需要注意安全吗?
答案 0 :(得分:3)
到目前为止,我已经意识到我不能同时使用两个网址段和查询字符串。
当然可以。在配置中试试这个:
$config['uri_protocol'] = "PATH_INFO";
那应该开始了。现在,由于CI放弃并清空$ _GET变量,您需要像这样重新填充它:
parse_str($_SERVER['QUERY_STRING'],$_GET);
现在唯一真正关心的是,如果你有全局XSS过滤,你应该知道你只是手动将查询字符串解析为全局$ _GET变量。这意味着您尚未通过任何XSS过滤器传递它。在CI 1.x中,您可以通过输入库访问过滤器,如下所示:
$myvar = $this->input->xss_clean($_GET['myvar']);
在CI 2.x中,您可以通过安全库执行此操作:
$myvar = $this->security->xss_clean($_GET['myvar']);
当然,不言而喻,您可以扩展Controller类,使其具有get()
方法,自动完成所有这些操作,以便您可以执行此操作:
$myvar = $this->get('myvar');