25

I was wondering if anybody knows the total length that a post global could be. e.g:

$_POST['formInput'] = "hello world, how long can I be?"; 

I am creating a site where someone will enter an unknown amount of chars into a textarea, so potentially it could be 2 pages on a word document.

So if anybody knows of any other methods of how I can do this apart from using a $_POST global (it can't be saved in a file, as it's important data that I don't want other people to find) - that would be very helpful.

Thanks

2

4 Answers 4

29

Check your php.ini for post_max_size. This is typically about 8mb by default, but if you're on shared-hosting, it could definitely vary.

; Maximum size of POST data that PHP will accept. post_max_size = 8M

You'll have to use $_POST if you wish to send large amounts of data to the server. For further study, I'd suggest checking out POST Method Uploads in the documentation.

Sign up to request clarification or add additional context in comments.

1 Comment

Apache has the LimitRequestBody & LimitRequestFieldSize directives too, not always safe to assume it's restricted by just PHP.
9

$_POST is populated from the body of a HTTP-request. Since there are no restrictions on the size of a HTTP-request, there are no restrictions in the protocol layer. However PHP has some limitations on how much input it will read. You can control this with the ini-setting post_max_size

Comments

4

Another problem can be the default limit in php.ini for directive max_input_vars (default 1000), not only the post_max_size. If you have e.g. a very large form with thousands of checkboxes the $_POST array will have only 1000 keys.

2 Comments

This actually solved my problem with a request being a lot less than post_max_size, but it hit the max_input_vars limit. Thanks!
Man you saved my day. I only posted about 80kb of data but with > 1000 fields (big form). Arbitrary fields seemed to be missing on side of PHP until I checked what the browser initially posted against what $_POST[] actually contained, and realized that "only" 1000 fields where parsed.
1

If you want some large amount of data sent from the browser to the server, you'll have to use HTTP POST method -- which means the data will be received, on the PHP side, in the $_POST superglobal array ; there's not much you can do about that.

The configuration directive post_max_size defines the maximum amount of data that can be received using the POST method -- you might need to set that to a value higher than the default one, depending on your needs.

And, as said on the documentation of post_max_size, the value set for memory_limit can also have its importance.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.