2010-11-01 46 views
0

我想在Codeigniter中建立一个分页搜索,并且会喜欢它的一些帮助。Codeigniter和查询字符串分页

到目前为止,我已经意识到我不能同时使用两个url段和查询字符串。只使用查询字符串会产生非常难看的URL。

我知道Codeigniter销毁了GET,我试图将其放回去。Ergo ...如果我将它放在搜索控制器的构造函数中,我的问题是否会解决?

 parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET); 

因为如果它适用于我,是否有任何我需要注意安全明智?

回答

3

到目前为止,我已经意识到我不能同时使用两个url段和查询字符串。

当然可以。试试这个在你的配置:

$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'); 
+0

这就是我一直在寻找!感谢您的帮助 – Booski 2010-11-02 14:43:31

+1

您也可以通过设置'$ config ['enable_query_strings'] = true'来在您的config.php文件中启用查询字符串;'这将允许您使用输入类并在需要时自动清理内容。 '$ this-> input-> get('myvar')' – WeeJames 2010-11-02 22:07:54

+0

@WeeJames令人惊讶的是,我从来没有试过这个!感谢您的建议。 – treeface 2010-11-02 22:37:07