2017-04-20 7 views
1

정확한 정의를 검색하고 있지만 만족할만한 정의를 찾을 수 없습니다. 내가 nusoap의 웹 서비스를 사용하고 있었다 ,

$server->service($HTTP_RAW_POST_DATA); 

사람이 나를 여기 $ HTTP_RAW_POST_DATA을의 목적이 무엇인지 알려 주시기 바랍니다 수있는 라인을있다. 제 연구에 따르면 원시 포스트 데이터를 수집합니다. 하지만 나는 대답으로 만족하지 못합니다. 원본 게시물 데이터의 정확한 평균은 무엇입니까?

+0

[TFM] (http://php.net/manual/en/reserved.variables.httprawpostdata.php)은 매우 명확하게 말합니다. –

답변

0

HTTP 메시지는 일련의 머리글과 본문 (머리글에 따라 필수/선택/금지 될 수 있음)으로 구성됩니다.

URL http://stackoverflow.com/questions/43519007/usage-of-http-raw-post-data의 경우 본문은 읽고있는 문서를 생성하는 데 사용되는 HTML입니다.

GET 요청을하면 요청 본문이 없습니다.

POST 요청을하면 다음과 같은 메시지가 나타납니다. 설문지를 제출하면 enctype 속성으로 지정할 수있는 형식 중 하나를 사용하여 양식이 인코딩됩니다.

일반적으로 PHP에서 해당 데이터로 작업하려면 몸이 해독 된 후 내용이 포함 된 $_POST을 사용합니다.

원시 몸체는 전에 전에 디코딩되었습니다.

+0

HTML에 대해 이야기하고 있기 때문에 약간 답답합니다. * response * body이며 실제로 그 질문과 관련이 없습니다. – IMSoP

2

HTTP 요청은 두 부분으로 구성됩니다. 머리글과 본문 집합입니다.

헤더에는 요청되는 URL 및 캐싱 제어 도우미와 같은 항목이 포함됩니다 (예 : "어제의 버전이 있습니다. 변경 사항이있을 경우 새 것을 제공하십시오.").

요청 유형에 따라 본문이 나타나거나 나타나지 않을 수 있습니다. POST 요청에는 본문이 있습니다.

본문은 클라이언트가 좋아하는 형식이 될 수 있습니다. 헤더 중 하나가 서버에 형식이 무엇인지 알려줍니다.

HTML 양식에 사용되는 몇 가지 형식이 있으며 PHP는이를 구문 분석하고 $ _POST에 데이터를 저장하는 방법을 알고 있습니다.

데이터가 JSON과 같은 다른 형식이거나 데이터가 PHP 이름과 일치하지 않는 규칙 (예 : 동일한 이름의 키 끝에 []가있는 규칙)을 준수하는 경우 직접 데이터에 액세스하여 직접 구문 분석 할 수 있습니다. 원시 POST 데이터입니다.

  • $_POST는 URL 인코딩 (응용 프로그램/www가 URL 인코딩) 스크립트에 게시 및 PHP는 당신을 위해 그들을 디코딩되는 변수가 포함되어 있습니다. HTML FORM 데이터를 다룰 때이 코드를 사용합니다.

  • file_get_contents("php://input") - API는 API를 작성하고 PHP가 $ _POST로 디코딩 할 수없는 XML/JSON/... 입력이 필요할 때 이것을 사용해야합니다.

  • $HTTP_RAW_POST_DATA - 이론적으로 위와 동일하지만 php.ini에 따라 다릅니다.더 이상 사용할 수

+0

상단의 블록 인용 부호가 어둡습니다. "php.ini에 의존"-> "php.ini에 의존하고 더 이상 PHP 7에서 사용할 수 없습니다." – IMSoP

+0

혼란 스럽네요. 1) 왜 $ _POST를 사용할 수 있습니까? 사용하지 않았습니까? –

+0

POST를 사용하여 JSON과 같은 데이터를 가져올 수 없으므로 직접 시도하십시오. –

0

시간의 대부분 PHP 7 우리가 HTTP POST 요청으로 작업 할 때, 우리는 브라우저에서 양식 제출의 결과를보고하지 있습니다. 이렇게하면 일련의 키 - 값 쌍을 인코딩하는 표준 방식 ("쿼리 문자열 인코딩"또는 "다중 파트/양식 데이터")으로 데이터가 포맷됩니다. PHP는이 형식의 요청을 자동으로 슈퍼 전역 배열 $_POST으로 파싱합니다.

그러나 실제 HTTP 요청 본문은 텍스트 일 ​​뿐이며 어떤 경우에는이를 그대로 취급하려고합니다. 예를 들어, SOAP 요청은 XML 문서를 POST 요청의 본문으로 사용합니다. $HTTP_RAW_POST_DATA은이 텍스트에 대한 액세스 권한을 제공합니다. 처리되지 않았기 때문에 "원시"입니다. 문자열로 반환됩니다.

그것은 $HTTP_RAW_POST_DATA이 접근의 이전 방법, 그리고 PHP의 최신 버전에서 올바른 방법입니다 php://input이 같은 원시 데이터를 나타내는 가상 파일입니다 file_get_contents('php://input');를 사용하는 것을 주목할 필요가있다.