php $_POST array empty upon form submission

Mike D picture Mike D · Aug 15, 2009 · Viewed 158.6k times · Source

I have a custom CMS i've built that works perfectly on my dev box (Ubuntu/PHP5+/MySQL5+).

I just moved it up to the production box for my client and now all form submissions are showing up as empty $_POST arrays.

I found a trick to verify the data is actually being passed using file_get_contents('php://input'); and the data is showing up fine there -- the $_POST/$_REQUEST arrays are always empty.

I've also verified the content-type headers are correct as well via firebug (application/x-www-form-urlencoded; charset=utf-8).

This issue is happening regardless of whether a form is submitting via AJAX or a regular form submit.

Any help is greatly appreciated!

Answer

tiltem picture tiltem · Feb 10, 2013

I know this question was about POST via a Form, but came here looking for answers for similar issue when POSTing with JSON content-type. Found the answer and wanted to share it as it cost me much time.

When using JSON content-type the $_POST array will not populate (only with multi-part forms I believe)

Here is what did work to correct the issue:

$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);

hope this helps someone!