> php教程 > PHP开发 > PHP로 POST 데이터를 얻는 여러 방법 요약

PHP로 POST 데이터를 얻는 여러 방법 요약

高洛峰
풀어 주다: 2016-12-23 15:56:01
원래의
1402명이 탐색했습니다.

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'];

설명:
항상 $HTTP_RAW_POST_DATA 변수를 생성합니다. POST 데이터.
이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견될 때만 생성됩니다.
enctype="multipart/form-data" 양식 데이터에는 $HTTP_RAW_POST_DATA를 사용할 수 없습니다.
게시된 데이터가 PHP에서 인식되지 않으면 $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 받을 수 있습니다.
예: 텍스트 /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=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A% E6%B6%88%E6%81%AF
먼저 문서를 확인하면 개발 모드를 활성화한 후 사용자가 애플리케이션에 응답할 때 WeChat 서버가 XML 데이터 문자열을 게시한다는 것을 알 수 있습니다. 확인된 콜백 URL로

URL이 http://www.xxx.com이라고 가정

Http 요청 방법: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS× tamp=13500001234&nonce=123412323

POST의 XML 콘텐츠는 다음과 같습니다.

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName> 
   <CreateTime>1348831860</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
   <AgentID>1</AgentID>
</xml>
로그인 후 복사
그럼 이 콘텐츠는 어떻게 받나요?

이때 사용할 수 있습니다: 방법 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[&#39;HTTP_RAW_POST_DATA&#39;];
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($input, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
var_dump($xml);
로그인 후 복사


추가 PHP POST 가져오기 데이터를 요약하는 여러 가지 방법에 대한 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿