PHP 的 max_input_vars 有点坑
近期有个后台项目中,不定时出现提交数据不完整.而且系统也没有报错.刚开始以为是后台API问题,整了半天,依然无果.最后直接输出post数组,发现一个规律.post数组最大数量只能到1000,于是怀疑是否是php配置问题.果断问度娘google一番,发现php在升级到5.3.9后多了一个配置max_input_vars
,默认值1000
php.ini配置
; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000
官方解释: http://php.net/manual/zh/info.configuration.php#ini.max-input-vars
接受多少 输入的变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量) 指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。 如有超过指令指定数量的输入变量,将会导致 E_WARNING 的产生, 更多的输入变量将会从请求中截断。
解决方案
小手一抖1000
变5000
,问题ok
说明: var[]=&var[]=
是算两个
该方案也不能一劳永逸,可以在提交时用js对提交数据
字符串进行编码
(json等),在服务器接受时对数据进行字符串进行解码