>  기사  >  백엔드 개발  >  PHP_php 팁을 사용하여 POST 데이터를 얻는 여러 방법 요약

PHP_php 팁을 사용하여 POST 데이터를 얻는 여러 방법 요약

WBOY
WBOY원래의
2016-05-16 20:22:131129검색

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 콘텐츠는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.



1348831860

<콘텐츠>
1234567890123456
1


그럼 이 콘텐츠는 어떻게 받나요?

이때 사용할 수 있습니다: 방법 2 (file_get_contents("php://input")), 방법 3 ($GLOBALS['HTTP_RAW_POST_DATA'])

방법 2(file_get_contents("php://input")):

코드 복사 코드는 다음과 같습니다.
$input = file_get_contents("php://input"); //POST 데이터 수신
$xml = simplexml_load_string($input); //POST 데이터를 simplexml 객체로 추출
var_dump($xml);

방법 3 ($GLOBALS['HTTP_RAW_POST_DATA'])

코드 복사 코드는 다음과 같습니다.
$input = $GLOBALS['HTTP_RAW_POST_DATA'];
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);
var_dump($xml);

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.