为什么$ _POST中缺少某些值?

时间:2016-05-31 01:26:37

标签: php post

我有很多

<input type="checkbox" name="course_id[]" value="xxx"/>

以我的形式。但是$_POST['course_id']只提交了部分值。

例如,我发布了course_id[]=1&course_id[]=2&course_id[]=3&course_id[]=4,但$_POST['course_id']["1","2","3"].

在实际情况中,发布了超过1000个course_ids,但$_POST['course_id']只有约990个course_id。

我已经通过tshark捕获了HTTP包,发现course_id []的所有值都发布到了PHP。

PHP版本是5.5.9

2 个答案:

答案 0 :(得分:0)

在PHP配置中,POST限制为特定大小。根据当然的数量,也许你达到了这个限制。 您可以检查此值post_max_size

参考:http://php.net/manual/en/ini.core.php#ini.post-max-size

答案 1 :(得分:0)

我怀疑您遇到的问题是max_input_vars设置为默认值1000.我认为您发送了10个其他参数,然后990 course_ids最大限制为1000。达到该限制,您可以发送超过1000个参数。

您可以在手册的页面http://php.net/manual/en/info.configuration.php#ini.max-input-vars上阅读更多内容。

从手册:

Name            Default Changeable      Changelog
max_input_vars  1000    PHP_INI_PERDIR  Available since PHP 5.3.9.
  

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

但请记住此设置的目的:

  

使用此指令可减轻拒绝服务攻击的可能性。