1

我的测试服务器上有一件奇怪的事情:我设置max_input_vars为 just100并发送了一个带有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'));
}

但我得到了错误

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

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

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

  • $_GET: 1
  • $_POST:239
  • $_COOKIE:1
4

1 回答 1

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))
});
于 2013-10-03T16:37:16.243 回答