CodeIgniter - 不允许使用关键字符

时间:2011-03-24 17:38:33

标签: codeigniter

  

可能重复:
  CodeIgniter Disallowed Key Characters

我对我要提交的表单有一些问题,它的动态和复选框值来自数据库,唯一的问题是其中一个字段有#,当我尝试要提交表单,它会返回'disallowed key characters'

如何才能提交#

3 个答案:

答案 0 :(得分:9)

它被硬编码到函数_clean_input_keys()中的Input类中。

只需创建一个MY_Input类并覆盖该函数。

/**
* Clean Keys
*
* This is a helper function. To prevent malicious users
* from trying to exploit keys we make sure that keys are
* only named with alpha-numeric text and a few other items.
*
* @access   private
* @param    string
* @return   string
*/
function _clean_input_keys($str)
{
    // if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) <---- DEL
    if ( ! preg_match("/^[#a-z0-9:_\/-]+$/i", $str)) // <----INS
    {
        exit('Disallowed Key Characters.');
    }

    // Clean UTF-8 if supported
    if (UTF8_ENABLED === TRUE)
    {
        $str = $this->uni->clean_string($str);
    }

    return $str;
}

答案 1 :(得分:5)

根据您的问题,似乎您在表单中使用get作为方法,因此它会给出disallowed key characters错误。

要允许角色#,只需在CONFIG文件 -

中添加以下内容即可
$config['permitted_uri_chars'] = '\#';

现在,角色#将被允许在网址中。

答案 2 :(得分:-2)

替换:

      if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))

用这个:

      if ( ! preg_match("/^[#a-z0-9:_|\/-]+$/i", $str))
system/core/input.php

中的