如何禁用Codeigniter _GET查询字符串?

时间:2011-12-14 21:16:17

标签: php codeigniter

我认为Codeigniter删除了从url检索_GET数据的功能,并添加了自己的功能,您可以在其中检索URI段。例如。 localhost/controller/method/10

今天我更新到Codeigniter 2.1.0后,我尝试了$this->input->get('data')并在我的网址localhost/controller/method?data=10中运行了。我是不是以某种方式破坏了我的Codeigniter安装,或者这个功能现在应该在这里?

在我的config/config.php文件中,我发现了以下两行:

$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;

我认为第一行只会启用Codeigniter的GET方法来使用URI段,例如。控制器/方法/数据/ MOREDATA。而第二个将启用查询字符串,例如。 ?数据= 10

那我在这里错过了什么?

2 个答案:

答案 0 :(得分:1)

$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;
  

认为第一行只能启用Codeigniter的GET方法   使用URI段。而第二个将启用查询   字符串。

AFAIK,你对第二个是正确的,而对于第一个,它只是意味着$ _GET数组没有被Input类“破坏和净化”。具体来说,我引用输入类中的_sanitize_global()方法,它具有以下代码行:

// Is $_GET data allowed? If not we'll set the $_GET to an empty array
        if ($this->_allow_get_array == FALSE)
        {
            $_GET = array();
        }
        else
        {
            if (is_array($_GET) AND count($_GET) > 0)
            {
                foreach ($_GET as $key => $val)
                {
                    $_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
                }
            }
        }
  

我查看了用户指南,并且有一节介绍   $ this-> input-> get()但我认为那只是在讨论   Codeigniter与URI段的方式。

看起来你正在寻找/引用$this->uri->segment(n)方法,该方法在uri字符串中获取指定的 n 段;这(大致)相当于在URL中获取查询参数。

答案 1 :(得分:0)

没有必要将$ _GET与codeigniter一起使用,只需使用$this->uri->segment(n)从url获取变量,根据您的网址分段,ex

http://localhost/myweb/index.php/controller/function/myvar

然后段1是控制器2是功能,3是myvar,就是这样,清楚和安全我来宾:D