我有一个html表单,大约有1500个输入字段*(文本或隐藏)。 form.action是POST,每个输入字段都有一个唯一的名称(没有name = foo [])。
每当我在提交表单后尝试在PHP中打印$ _REQUEST的每个变量时,只打印前几个条目。实际上,$ _REQUEST变量只包含1001个项目(因此缺少大约500个字段)。
知道为什么会这样吗?
由于数据是通过post而不是get发送的,因此url-limit不是问题。所以我认为它与网络服务器的配置有关,而且请求太大了。但是将LimitRequestBody设置为0并不会改变结果中的任何内容。
就这个PHP数组使用的内存而言,我只读到大小仅受总体内存的限制,这应该足够了。 (每个密钥约为20个,每个值大约为6个)
我错过了什么吗?
*如果您想知道:导航包含大约750个条目,每个条目2个字段(一个位置用于排序,一个用于父级,如果嵌套)
答案 0 :(得分:6)
自PHP 5.3.9起,有一个名为“max_input_vars”的新配置设置,它限制了输入变量的数量。默认设置为1000.同时检查是否安装了Suhosin,因为还有similar setting。
虽然,我建议尽可能减少字段数。
答案 1 :(得分:2)
尝试覆盖php_flag max_input_vars。
添加到.htaccess文件或更改php.ini
php_flag max_input_vars 1500
还有一个嵌套标志
php_flag max_input_nesting_level 64
答案 2 :(得分:1)
也许你超过POST的大小?哟可以使用mime multipart,就像人们发布文件一样。
答案 3 :(得分:0)
检查你的php.ini配置中的post_max_size值 - 也许你已经超过了它?