max_input_vars和序列化数据

时间:2013-08-15 05:15:40

标签: php string variables serialization

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

甚至PHP的父亲Rasmus Lerdorf也认为这是unintuitive

答案 1 :(得分:2)

您可以在php.ini中进行更改。默认限制为1000.这是手册所说的。

  

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

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

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