用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示。有人说 url 里有非法字符。但是确定 url 是纯英文的,问题还是出来了。但清空浏览器历史记录和cookies后。 刷新就没问题了。有时候。打开不同的浏览器。有的浏览器会有问题。有的就不会。
解决 CodeIgniter 框架应用中,出现Disallowed Key Characters错误提示的方法。找到core文件夹下的Input文件,将下面的代码:
01 |
function _clean_input_keys( $str ) |
03 |
if ( ! preg_match( "/^[a-z0-9:_/-]+$/i" , $str )) |
05 |
exit ( 'Disallowed Key Characters.' ); |
08 |
if (UTF8_ENABLED === TRUE) |
10 |
$str = $this ->uni->clean_string( $str ); |
改成这样:
01 |
function _clean_input_keys( $str ) |
03 |
$config = &get_config( 'config' ); |
04 |
if ( ! preg_match( "/^[" . $config [ 'permitted_uri_chars' ]. "]+$/i" , rawurlencode( $str ))) |
06 |
exit ( 'Disallowed Key Characters.' ); |
10 |
if (UTF8_ENABLED === TRUE) |
12 |
$str = $this ->uni->clean_string( $str ); |
或者改成:
01 |
function _clean_input_keys( $str ) |
03 |
if (preg_match( "/^,_[a-z0-9:_/-]+$/" , $str )){ |
04 |
$str = preg_replace( "/,_/" , "" , $str ); |
07 |
if ( ! preg_match( "/^[a-z0-9:_/-]+$/i" , $str )) |
09 |
exit ( 'Disallowed Key Characters.' . $str ); |
大概就这样~留个记录。