php post的表单字段数量超1000提失失败:max_input_vars


我用ajax post提交一个json到php,接收到的post数组出现丢失,数组的数量少了好多。

百度,google,bing…….此处省略。

原来是php.ini配置中的max_input_vars参数限制了,默认是1000,表单字段数量超1000就是这种情况。

1.修改php.ini

max_input_vars 1000

2.修改.htaccess

如果apache支持配置htaccess,加上

php_value max_input_vars 10000

有的虚拟空间不支持,会出现500错误。比较坑

3.降php版本

max_input_vars是在php 5.3.9之后才有的参数。把php版本降到php5.2就可以。

有的虚拟空间支持版本切换

 

可以考虑自定义个函数来替代,这样就不怕被限制了1000个,不过也要考虑安全原因。

/**
 * 替代 parser_str($query, $output)
 * @return array $output
 **/
function parseQuery($string){
 $return = array();
 $pairs = explode( '&', $string );
 foreach ($pairs as $pair){
 list( $k, $v ) = array_map( 'urldecode', explode( '=', $pair ) );
 list( $k, $index) = preg_split( "/[][]/", $k );

 if( isset($index) ){
 //echo "$k , $index, $v\n\n";
 $return[$k][$index] = addslashes($v);
 }else{
 //echo "$k , $v\n\n";
 $return[$k] = addslashes($v);
 }
 }
 return $return;
}

$string = "q=1&d[1]=3&d[2]=4&c[h1]=2&c[h2]=tad";
print_r( parseQuery( $string ) );

 

~~完


3条回应:“php post的表单字段数量超1000提失失败:max_input_vars”