我认为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
那我在这里错过了什么?
答案 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