1. PHP로 POST 데이터를 얻는 여러 가지 방법
방법 1. 가장 일반적인 방법은 $_POST['fieldname'];
참고: Content-Type: application/x-www-form-urlencoded로 제출된 데이터만 수신할 수 있습니다
설명: 이것이 양식에서 게시된 데이터입니다
방법 2, file_get_contents("php://input");
설명:
POST의 원시 데이터를 읽을 수 있습니다.
$HTTP_RAW_POST_DATA보다 메모리에 대한 부담이 적고 특별한 php.ini 설정이 필요하지 않습니다.
php://input은 enctype="multipart/form-data"와 함께 사용할 수 없습니다.
설명:
Content-Type을 지정하지 않은 POST 데이터의 경우 file_get_contents("php://input")를 사용하여 원본 데이터를 얻을 수 있습니다.
실제로 이 방법은 PHP를 사용하여 POST 데이터를 수신하는 데 사용할 수 있습니다. 콘텐츠 유형에 관계없이 바이너리 파일 스트림을 포함하는 것도 허용됩니다.
따라서 2번 방법을 사용하는 것이 가장 안전한 방법입니다
방법 3, $GLOBALS['HTTP_RAW_POST_DATA'];
설명:
항상 원시 POST 데이터가 포함된 $HTTP_RAW_POST_DATA 변수를 생성합니다.
이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견된 경우에만 생성됩니다.
enctype="multipart/form-data" 양식 데이터에는 $HTTP_RAW_POST_DATA를 사용할 수 없습니다
게시된 데이터가 PHP에서 인식되지 않으면 $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 수신할 수 있습니다.
text/xml, 비누 등
설명:
$GLOBALS['HTTP_RAW_POST_DATA']는 POST의 원본 데이터를 저장합니다.
$_POST 또는 $_REQUEST는 PHP에서 형식화된 데이터를 키=>값 형식으로 저장합니다.
그러나 POST 데이터가 $GLOBALS['HTTP_RAW_POST_DATA']에 저장되는지 여부는 centent-Type 설정에 따라 다릅니다. 즉, 데이터를 POST할 때 Content-Type을 명시적으로 지정해야 합니다(application/x-www-form-urlencoded). POST 데이터는 $GLOBALS['HTTP_RAW_POST_DATA']
2. 시연
1. PHP에서 POST XML 데이터를 얻고 XML 데이터를 구문 분석하는 방법
예를 들어 WeChat 기업 계정을 개발할 때 사용자가 응답하는 데이터를 어떻게 처리합니까?
문서: http://qydev.weixin.qq.com/wiki/index.php?title=일반 메시지 받기
먼저 문서를 확인하면 알 수 있습니다. 개발 모드를 활성화한 후 사용자가 애플리케이션에 응답하면 WeChat 서버는 확인된 콜백 URL에 XML 데이터 문자열을 게시합니다.
URL이 http://www.xxx.com
이라고 가정해 보겠습니다.
HTTP 요청 방식: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323
POST의 XML 콘텐츠는 다음과 같습니다.
이때 사용할 수 있습니다: 방법 2 (file_get_contents("php://input")), 방법 3 ($GLOBALS['HTTP_RAW_POST_DATA'])
방법 2(file_get_contents("php://input")):