2012-02-29 43 views
20

我有一個大表格,我可以從所有的元素的值被正確發送螢火蟲看到的,但是當我的print_r($ _ POST)只有1000顯示的變量。我的max_post_size被設置爲25M,所以我知道這不是問題,我通過我的php.ini搜索關鍵字'post'和'max',但是我沒有找到任何東西。PHP郵政限於1000個變量

1000只有1/4左右,我正經過如此明顯,這是對我來說是相當大的問題的要素,我非常感謝所有幫助我能。

+13

只有1000個變量? – 2012-02-29 19:15:32

+0

*(嘴巴)*一千? – MacMac 2012-02-29 19:15:57

+2

這可能是HTTP協議的限制(儘管我從來沒有聽說過它)。有什麼辦法可以最大限度地減少POST中發送的變量數量?我從來沒有聽說過一個擁有9000以上(不得不說)POST變量的網站。 – 2012-02-29 19:16:36

回答

34

我看你在這裏做什麼。

max_input_vars, 1000 

介紹,爲了防止哈希碰撞攻擊: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html 但在5.3.9失敗: http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html 所以,你應該升級到5.3.10+如果這是問題。

+2

也可能是'suhosin.post.max_vars = 1000'(如果他使用Suhosin,當然)。 – Crontab 2012-02-29 19:19:58

+0

@Crontab,可能,你是對的,但所有託管公司應該已經更新至5.3.10+ :) – 2012-02-29 19:31:02

+0

我看到關於max_input_vars和suhosin.post.max_vars的設置,但都不在我的php.ini中。我已安裝5.3.6。 – jreed121 2012-02-29 19:36:59

6

我也有類似的情況;我只能發佈數組的前1000個元素。

我的解決辦法是implode()在服務器側的數組轉換成一個長字符串和explode()它。

json_encode()大概可以正常工作。

7

我的使用PHP v5.4.20 1000變量限制是完全一樣的問題。儘管php.ini文件沒有包含任何這樣的'max_input_vars'這一行,但我只是找到了一個方便的地方插入頂部[PHP]部分,添加了'max_input_vars = 10000'這一行,重新啓動了Apache並且一切都解決了。

0

好的。我已經想通了使用的解決方案的jQuery

我做了這樣的

$("#single-form").submit(function(event) { 
    event.preventDefault(); 
    var table_data = $(this).serialize(); 
    console.log(table_data); 
    // ajax call to handle the data 
} 

serialize功能將給所有URL表單數據和PHP文件編碼字符串只是使用功能parse_str解析字符串變成變量。