2013-09-30 52 views
0

一個奇怪的是我的測試服務器上:我設置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')); 
} 

,但我得到的錯誤

請求數(90) max_input_vars允許的最大值附近:100

爲什麼只是90?不應該是100或99?

我得到240瓦爾在$ _REQUEST,如果我設置更高的限制,要準確:

  • $ _GET:1
  • $ _ POST:239
  • $ _COOKIE:1
+0

您確定要發送超過100個_unitely named_輸入字段嗎? 'max_input_vars'沒有考慮到唯一的名字(如果我發送'field_name'兩次,它將被計算爲2個輸入變量),但是它們只會被放在'$ _REQUEST'中一次(偏好於最近的)。 –

+0

是的,我敢肯定,如果我設置了一個更高的限制,那麼我得到240個相同的計數和相同的任務 – rubo77

+0

您的'$ _REQUEST'值中是否有任何數組? – Pitchinnate

回答

0

max_input_vars在計數($ a,COUNT_RECURSIVE)時計數子數組容器,因此您必須使用遞歸循環代替:

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