在做项目过程中,出现提交form表单的时候,出现了Disallowed Key Characters 的提示
打开ci框架的源码不难发现,在ci的核心input类中有这样一个函数:
function _clean_input_keys($str) { if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) { exit('Disallowed Key Characters.'); }
// Clean UTF-8 if supported if (UTF8_ENABLED === TRUE) { $str = $this->uni->clean_string($str); }
return $str; } 这是进行过滤的,所以抛出错误
我们在application的core中对这个方法进行重写即可 命名一个为MY_Input.php(前缀MY_可以在config.php中自定义),然后将下面代码加入即可
class AI_Input extends CI_Input {
//构造函数 function __construct(){ parent::__construct(); }
function _clean_input_keys($str) { if(preg_match("/^,_[a-z0-9:_\/-]+$/",$str)){ $str = preg_replace("/,_/","",$str); }
if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) { exit('Disallowed Key Characters.'.$str); } return $str; } } |