max_input_vars和序列化数据

Yek*_*ver 5 php string variables serialization

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

我创建了一个数组并尝试发送它,但是我收到了一个PHP警告:“您的PHP配置限制了以表格形式发布的最大字段数:max_input_vars为1000”

因此,我决定绕过此警告,并将所有巨大的数组修改为序列化的字符串。结果-警告消失了,但是我发现服务器端的数据被截断了。

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

尝试解析巨大的字符串时,为什么要应用“ max_input_vars”的限制?

Yek*_*ver 5

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

就连 PHP 之父 Rasmus Lerdorf 也认为这是不直观的


woo*_*eow 2

您可以在 中更改它php.ini。默认限制是1000。这是手册上说的。

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

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

如果情况并非如此,请尝试检查post_max_size是否也可能截断所发布内容的长度。