PHP 에서 POST 데 이 터 를 가 져 오 는 몇 가지 방법 을 모 았 습 니 다.
방법 1、가장 흔 한 방법 은:$POST['fieldname'];
설명:Content-Type:application/x-www-form-urlencoded 가 제출 한 데이터 만 받 을 수 있 습 니 다.
양식 POST 에서 나 온 데이터
방법 2、fileget_contents("php://input");
설명:
POST 의 원본 데 이 터 를 읽 을 수 있 도록 합 니 다.
와$HTTPRAW_POST_DATA 에 비해 메모리 에 주 는 압력 이 적 고 특별한 pp.ini 설정 이 필요 하지 않 습 니 다.
php://input enctype="multipart/form-data"에 사용 할 수 없습니다.
설명:
Content-Type 이 지정 되 지 않 은 POST 데이터 에 대해 서 는 file 을 사용 할 수 있 습 니 다.get_contents(“php://input”);원본 데 이 터 를 가 져 옵 니 다.
사실 POST 의 모든 데 이 터 를 PHP 로 받 으 면 이 방법 을 사용 할 수 있 습 니 다.바 이 너 리 파일 흐름 을 포함 하여 Content-Type 을 고려 하지 않 아 도 됩 니 다.
그래서 방법 둘 째 는 가장 안전 한 방법 입 니 다.
방법 3、$GLOBALS['HTTPRAW_POST_DATA'];
설명:
항상$HTTP 생 성RAW_POST_DATA 변 수 는 원본 POST 데 이 터 를 포함 합 니 다.
이 변 수 는 MIME 형식의 데 이 터 를 인식 하지 못 할 때 만 발생 합 니 다.
$HTTP_RAW_POST_DATA enctype="multipart/form-data" 폼 데이터 사용 불가
post 에서 온 데이터 가 PHP 로 인식 되 지 않 는 다 면$GLOBALS[HTTPRAW_POST_DATA]받 으 러 왔 습 니 다.
예 를 들 어 text/xml 또는 soap 등등.
설명:
$GLOBALS['HTTP_RAW_POST_DATA']POST 에서 온 원본 데 이 터 를 저장 합 니 다.
$_POST 또는$REQUEST 는 PHP 가 key=>value 형식 으로 포맷 된 데 이 터 를 저장 합 니 다.
하지만$GLOBALS['HTTPRAW_POST_DATA']에서 POST 를 저장 할 지 여 부 는 centent-Type 의 설정 에 달 려 있 습 니 다.즉,POST 데 이 터 는 Content-Type:application/x-ww-form-urlencoded 를 명시 해 야 POST 데 이 터 를$GLOBALS['HTTPRAW_POST_DATA']중
시연
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
먼저 문 서 를 찾 아 보면 알 수 있 습 니 다.개발 모드 를 사용 하면 사용자 가 응용 프로그램 에 답장 정 보 를 보 낼 때 위 챗 서버 에서 검 증 된 리 셋 URL 로 POST XML 데 이 터 를 보 냅 니 다.
이 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(fileget_contents("php://input"),방법 3($GLOBALS['HTTPRAW_POST_DATA'])
방법 2(fileget_contents("php://input")):
$input = file_get_contents("php://input"); // POST
$xml = simplexml_load_string($input); // POST simplexml
var_dump($xml);
방법 3($GLOBALS['HTTPRAW_POST_DATA'])
$input = $GLOBALS['HTTP_RAW_POST_DATA'];
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);
var_dump($xml);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.