방법 1, $_POST
$_POST 또는 $_REQUEST는 PHP에서 포맷한 데이터를 키=>값 형식으로 저장합니다.
방법 2, file_get_contents("php://input") 사용
Content-Type이 지정되지 않은 POST 데이터의 경우 file_get_contents("php://input")를 사용할 수 있습니다. 원본 데이터를 가져옵니다.
실제로 PHP를 사용하여 POST로 수신된 모든 데이터는 이 방법을 사용합니다. 콘텐츠 유형에 관계없이 바이너리 파일 스트림을 포함하는 것도 가능합니다.
$HTTP_RAW_POST_DATA에 비해 메모리에 대한 부담이 적고 특별한 php.ini 설정이 필요하지 않습니다.
php://input은 Content-Type이 multipart/form-data인 POST 데이터를 읽을 수 없습니다. php.ini의 Always_populate_raw_post_data 값을 On으로 설정해야 합니다.
php://input은 $_GET 데이터를 읽을 수 없습니다. 이는 $_GET 데이터가 http 요청의 본문 부분이 아닌 http 요청 헤더(header)의 PATH 필드에 query_path로 기록되기 때문입니다.
방법 3, 전역 변수 $GLOBALS['HTTP_RAW_POST_DATA'] 사용
POST의 원본 데이터는 $GLOBALS['HTTP_RAW_POST_DATA']에 저장됩니다.
단, POST 데이터가 $GLOBALS['HTTP_RAW_POST_DATA']에 저장되는지 여부는 centent-Type 설정에 따라 다릅니다. PHP가 Content-Type을 인식할 수 없는 경우에만 POST 데이터를 그대로 입력합니다. 변수 $GLOBALS['HTTP_RAW_POST_DATA']. Content-Type=application/x-www-form-urlencoded인 경우 변수는 비어 있습니다.
또한 Content-Type이 multipart/form-data인 POST 데이터를 읽을 수 없습니다. 또한 PHP가 항상 $http_raw_post_data 변수에 POST 데이터를 채울 수 있도록 php.ini의 Always_populate_raw_post_data 값을 On으로 설정해야 합니다.