- 本文地址: https://www.yangdx.com/2020/06/159.html
- 转载请注明出处
从 PHP 5.3.9 起,php.ini 中增加了一个配置项 max_input_vars
,默认值为1000。
手册中 max_input_vars
释义如下:
接受多少 输入的变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量)指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的输入变量,将会导致 E_WARNING 的产生,更多的输入变量将会从请求中截断。
平时的开发中只是做一些小应用,数据量太小,几乎不会关心这个配置项。处理一些数据量较大的表单时,就很可能会碰到了。
例如,表单中某字段用了多选框,选项超过1000个,提交的时候,就会造成后面的字段被自动截断,致使程序没有正常接收提交的全部数据。今天上午,我在公司就遇到了这个问题!
增大 php.ini 中的 max_input_vars
默认值,可以解决问题。但服务器较多,都修改也麻烦。还有就是,修改 php.ini 降低了程序代码的通用性。
变通的解决办法:继续用多选框,但表单改用 ajax 处理提交,在提交前将多选框选中的值拼接成一个字符串,放入一个新字段提交,后端接收字符串值再拆解成数组处理。
快来评论一下吧!
发表评论