Tuesday 14 August 2018

PHP: Get POST JSON



My recent work at Mozilla has me creating an OAuth-like authentication transaction between Bugzilla and Phabricator. This task has thrust me back into the world of PHP, a language I haven't touched much (since version ~5.2) outside of creating WordPress themes and plugins for this blog. Coming back to a language you haven't touched in years feels like a completely new experience; you notice patterns and methods that you wouldn't have guessed of in years past.


Part of the authentication transaction requires Phabricator to receive a POST request that contains JSON data. I had expected the data to land in $_POST but the variable was empty; how the hell do I get the POST data? To get POST JSON with PHP, you use the following:

# Get JSON as a string 
$json_str = file_get_contents('php://input'); 
 # Get as an object 
$json_obj = json_decode($json_str);


file_get_contents, which I though was only used to retrieve content from local files or traditional URLs, allows you to use the special php://input address to retrieve JSON data as a string. From there you use json_decode to turn the JSON string into a workable object/array.

0 comments:

Post a Comment