PHP 表单提交数据项过多被截取问题
文章目录
问题描述
今早业务系统中的带宽工具,出现因 Form 表单中传递的数据项过多,而后端 PHP 出现缺失部分参数值的问题。
问题原因
php.ini
中有一配置项max_input_vars
,默认值为1000。
表示接受多少输入的变量(限制分别应用于$_GET
、$_POST
和$_COOKIE
超全局变量) 指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的输入变量,将会导致E_WARNING
的产生,更多的输入变量将会从请求中截断。
英文解释如下:
How many GET/POST/COOKIE input variables may be accepted
因此,改变该值可以解决问题。但却可能引发如文档中所描述的不安全、加载速度过慢等问题。我们或许可以采用别的方式获取输入数据,比如php://input
获取json
字符串并解码的方式,或者将值用逗号拼接的方式等等。