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 데이터를 구문 분석합니까?
문서: 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로
Http 요청 방법: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS× tamp=13500001234&nonce=123412323
<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'])
$input = file_get_contents("php://input"); //接收POST数据 $xml = simplexml_load_string($input); //提取POST数据为simplexml对象 var_dump($xml);
$input = $GLOBALS['HTTP_RAW_POST_DATA']; libxml_disable_entity_loader(true); $xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA); var_dump($xml);