5

我在页面上有大量的输入元素,应该通过 ajax 提交给服务器。

我创建了一个数组并试图发送它,但我收到了一个 php 警告:“您的 PHP 配置限制了在表单中发布的最大字段数:max_input_vars 为 1000”

所以,我决定绕过这个警告,把我所有的大数组修改成一个序列化的字符串。结果 - 警告消失了,但我在服务器端截断了数据。

PS 在这两种情况下,问题都可以通过增加 max_input_vars 变量来解决。但是在第二个中,数据按parse_str($_POST['data'], $data)功能截断!

当我试图解析一个巨大的字符串时,为什么会应用“max_input_vars”的限制?

4

2 回答 2

5

“max_input_vars”设置的副作用是 parse_str()。此函数还受到 max_input_vars 指定的限制 - 没有明确记录。

甚至 PHP 之父 Rasmus Lerdorf 也认为这是不直观的。

于 2013-08-15T06:16:49.497 回答
2

你可以在php.ini. 默认限制为 1000。这是手册中所说的。

可以接受多少个输入变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量)。使用该指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于该指令指定的数量,则会发出 E_WARNING,并从请求中截断更多输入变量。此限制仅适用于多维输入数组的每个嵌套级别。

所以基本上它适用于每个嵌套级别。

如果不是这种情况,请尝试检查post_max_size是否也会截断发布内容的长度。

于 2013-08-15T05:24:07.087 回答