php Post limited to 1000 variables

I’ve got a large form and I can see from firebug that all of the elements’ values are being sent properly, but when I print_r($_POST) there are only 1000 variables displayed. My max_post_size is set to 25M so I know that’s not the issue and I searched through my php.ini for keywords like ‘post’ and ‘max’ and I didn’t find anything.

1000 is only about 1/4 of the elements that I’m passing so obviously this is a pretty big issue for me, I really appreciate any help I can get.

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

I see what you did here.

max_input_vars, 1000

Introduced in order to prevent hash collision attack:
http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html
But failed in 5.3.9:
http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html
So you should update to 5.3.10+ if that is problem.

Solution 2

I had a similar situation; I could only POST the first 1000 elements of an array.

My solution was to implode() the array into one long string and explode() it on the server side.

json_encode() could probably work as well.

Solution 3

I had that exact same problem of the 1000 variable limit using PHP v5.4.20. Even though the php.ini file did not contain any such ‘max_input_vars’ line, I simply found a convenient place to slot it in under the top [PHP] section, added the line ‘max_input_vars = 10000’, restarted Apache and everything was solved.

Solution 4

Ok. I’ve figured out a solution using jquery

I did it like this

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

serialize function will give the URL encoded strings of all form data and in PHP file just use the function parse_str to parse the string into variables.

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply