[PHP] POST 방식으로 건네받은 머리글과 본디글 얻기

(1) 머리글 (header)

  POST 방식으로 건네받은 정보의 머리글(헤더)은 apache_request_headers 함수로 얻을 수 있다.

$headers = apache_request_headers();
foreach ($headers as $header => $value) {
	echo "$header: $value\r\n";
}

  PHP 프로그램에 위 내용을 끼워서 돌린다면, 아래와 비슷한 정보들이 나올 수 있다.

Sec-Fetch-User: ?1
Sec-Fetch-Site: same-origin
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Ch-Ua-Platform: "Unknown"
Sec-Gpc: 1
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua: " Not;A Brand";v="99", "Google Chrome";v="67", "Chromium";v="67"
Origin: http://...
Referer: http://...
Dnt: 1
Accept-Encoding: gzip, deflate;q=1.0, *;q=0.5
Accept-Language: en-US,en;q=0.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Cookie: TSSESSION...=31e355b676561c0d55a782f2512ba6de
Content-Length: 400
Connection: keep-alive
Host: ...

(2) 본디글 (body, raw data)

  PHP에서 POST 방식으로 건네받은 자료의 본디글(원문)은 아래처럼 file_get_contents('php://input')로 받을 수 있다.

$raw_post_data = file_get_contents('php://input');

  여기에서 $raw_post_data에는 물음 줄글(query string), JSON, XML을 비롯한 어떤 형식으로도 해석하지 않은 본래 문자열이 들어간다.

  PHP 5.6에서 지원을 끊는다고 예고한 $HTTP_RAW_POST_DATA와 $GLOBALS['HTTP_RAW_POST_DATA']는 요즘판 PHP에서 쓸 수 없다. (https://www.php.net/manual/en/migration56.deprecated.php)

글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. minode 2022/09/17 21:11 고유주소 고치기 답하기

    globals가 계속 먹통이길래 몇십분째 영어로만 찾다가 우연히 한글로 검색하고 들렀는데 원인이 5.6 때문이었군요.. 정말 감사합니다.. 오늘 드디어 몇년째 미루던 업데이트를 한번 해야겠네요 ㅠㅠ

    • 팥알 2022/09/19 15:47 고유주소 고치기 답하기

      덧글 남겨 주셔서 고맙습니다.

      PHP가 6판을 건너뛰어서 그런지 PHP 5.6이 아주아주 옛날판인 것 같은 착각이 들기도 합니다. 저는 globals 변수들을 이제 못 쓴다는 걸 잘 몰랐는데, 외부 요인으로 생기는 오류를 탐구하다가 알았습니다.^^