【问题标题】:Codeigniter and Pagination with Query StringsCodeigniter 和带有查询字符串的分页
【发布时间】:2011-05-03 15:53:39
【问题描述】:

我正在尝试在 Codeigniter 中使用分页构建搜索,并希望得到一些帮助。

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

我了解 Codeigniter 破坏了 GET,我正试图将其放回原处。Ergo...如果我将它放在搜索控制器的构造函数中,我的问题会得到解决吗?

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

如果它对我有用,在安全方面我需要注意什么吗?

【问题讨论】:

    标签: codeigniter get query-string


    【解决方案1】:

    到目前为止,我已经意识到我不能同时使用 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');
    

    【讨论】:

    • 您也可以通过设置$config['enable_query_strings'] = true; 在您的config.php 文件中启用查询字符串,这将允许您使用输入类并在需要时自动清理内容。 $this->input->get('myvar')
    • @WeeJames 令人惊讶的是,我从未尝试过这个!感谢您的建议。
    • 别担心:我在这里的更新准确地列出了我为使查询字符串与标准 url 一起工作所做的工作。stackoverflow.com/questions/2894250/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2016-12-13
    • 2015-03-20
    • 1970-01-01
    相关资源
    最近更新 更多