在codeigniter中启用$ _GET

Nir*_*ish 11 php frameworks codeigniter query-string

我一直在试图弄清楚如何在CI中启用$ _GET.

框架似乎故意破坏$ _GET数组,并且启用它需要对核心类进行严格的修改.任何人都可以说这是为什么,以及如何克服它?

请注意,我希望保持URI解析和路由的方式,只需让$ _GET可用.

Ste*_*ran 14

将以下库添加到应用程序库中.它会覆盖清除$ _GET数组的默认输入库的行为.它允许URI段和查询字符串的混合.

应用/库/ MY_Input.php

class MY_Input extends CI_Input 
{
    function _sanitize_globals()
    {
        $this->allow_get_array = TRUE;
        parent::_sanitize_globals();
    }
}
Run Code Online (Sandbox Code Playgroud)

它还需要修改一些配置设置.uri_protocol设置需要更改为PATH_INFO和'?' 需要将字符添加到URI中允许的字符列表中.

应用/配置/ config.php中

$config['uri_protocol'] = "PATH_INFO";
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-?';
Run Code Online (Sandbox Code Playgroud)

然后可以访问通过查询字符串传入的值.

$this->input->get('x');
Run Code Online (Sandbox Code Playgroud)


Gor*_*don 9

CodeIgniter的安全手册:

GET,POST和COOKIE数据

CodeIgniter根本不允许GET数据,因为系统使用URI段而不是传统的URL查询字符串(除非您在配置文件中启用了查询字符串选项).系统初始化期间,输入类将取消设置全局GET数组.

阅读此论坛条目以获取可能的解决方案(从第1页的中间开始感兴趣).