为什么$ _REQUEST中的元素数量小于max_input_vars设置的限制?

时间:2013-09-30 12:56:27

标签: php

我的测试服务器上有一件奇怪的事情:我将max_input_vars设置为100并向over 100元素发送了一个巨大的请求

我用过:

$num=count($_REQUEST, COUNT_RECURSIVE);
$max=ini_get('max_input_vars');
if($max - $num<50) {
              die('Number of requests ('.$num.') near the maximum allowed value of max_input_vars:'.ini_get('max_input_vars'));
}

但我收到了错误

  

接近最大允许值max_input_vars的请求数(90):100

为什么只有90?不应该是100还是99?

如果设置了更高的限制,我会在$ _REQUEST中得到240个变量,确切地说:

  • $ _ GET:1
  • $ _ POST:239
  • $ _ COOKIE:1

1 个答案:

答案 0 :(得分:0)

max_input_vars在count($ a,COUNT_RECURSIVE)时不计算子数组容器,所以你必须改为使用递归循环:

$count = 0;
array_walk_recursive($_REQUEST, function($v) use(&$count) {
    if(!is_object($v)) ++$count;      //or if(is_string($v))
});