>  기사  >  백엔드 개발  >  PHP에서 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST의 차이점에 대한 자세한 그래픽 설명

PHP에서 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST의 차이점에 대한 자세한 그래픽 설명

墨辰丷
墨辰丷원래의
2018-05-21 09:50:542084검색

이 글은 주로 PHP에서 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST의 차이점을 소개하고 있으며, $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST의 기능과 사용법을 구체적인 사례를 바탕으로 분석하여 참고하실 수 있습니다.

세부 정보를 다음과 같이 변경합니다.

$_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] : $HTTP_RAW_POST_DATA 변수는 항상 생성되며 원본 POST 데이터를 포함합니다. 이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견된 경우에만 생성됩니다. $HTTP_RAW_POST_DATA는 enctype="multipart/form-data" 양식 데이터에는 사용할 수 없습니다.

즉, 기본적으로 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST는 동일합니다.
그러나 게시된 데이터가 PHP에서 인식되지 않는 경우 $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 text/xml 또는 비누 등을 받을 수 있습니다.

추가 설명: PHP에서 기본적으로 인식하는 데이터 유형은 application/x-www.form-urlencoded 표준 데이터 유형입니다.

설명서에는 다음과 같이 나와 있습니다.

항상 원본 POST 데이터가 포함된 변수를 생성하세요. 그렇지 않으면 이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견될 때만 생성됩니다. 그러나 원시 POST 데이터에 액세스하는 더 좋은 방법은 php://input입니다. enctype="multipart/form-data" 양식 데이터에는 $HTTP_RAW_POST_DATA를 사용할 수 없습니다.

질문: $HTTP_RAW_POST_DATA == $_POST인가요?

설명서에 따르면 대답은 '아니오'여야 합니다.
만약 다르다면 차이점은 무엇인가요?

다음과 같이 답을 알고 있습니다.

RAW/해석되지 않은 HTTP POst 정보는 다음을 통해 액세스할 수 있습니다.
$GLOBALS['HTTP_RAW_POST_DATA']
이는 게시물의 Content-Type이 PHP가 이해하는 것이 아닌 경우에 유용합니다. (예: text/xml).

즉, 기본적으로 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST는 동일합니다. 하지만게시된 데이터가 PHP에서 인식되지 않으면 $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 text/xml 또는 비누 등을 받을 수 있습니다.

PHP에서 기본적으로 인식하는 데이터 유형은 application/x-www.form-urlencoded 표준 데이터 유형입니다.

Content-Type=text/xml 유형을 사용하여 xml 문서의 내용을 PHP 서버에 제출하는 방법. 이 POST 데이터를 얻으시겠습니까?

RAW/해석되지 않은 HTTP POST 정보는 다음을 통해 액세스할 수 있습니다: $GLOBALS['HTTP_RAW_POST_DATA'] 이는 게시물의 Content-Type이 PHP가 이해하는 것이 아닌 경우에 유용합니다(예: text/xml).

Due 기본적으로 PHP는 application/x-www.form-urlencoded 표준 데이터 유형만 인식합니다. 따라서 text/xml과 같은 콘텐츠는 $_POST 배열로 구문 분석될 수 없으므로 프로토타입은 유지되어 $GLOBALS['로 전달됩니다. HTTP_RAW_POST_DATA']를 수신합니다.

이 기능을 구현할 수 있는 php://input도 있습니다.

php://input을 사용하면 POST의 원본 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA보다 메모리에 대한 부담이 적고 특별한 php.ini 설정이 필요하지 않습니다. php://input은 enctype="multipart/form-data"와 함께 사용할 수 없습니다.

응용 프로그램:

a.htm:

<form action="post.php" method="post">
<input type="text" name="user">
<input type="password" name="password">
<input type="submit">
</form>

post.php:

<? echo file_get_contents("php://input"); ?>

관련 권장 사항:

tomcat 구성 $_ post, $_get을 사용할 수 없습니다.

PHP에서 $_GET과 $_POST의 차이점

위 내용은 PHP에서 $GLOBALS['HTTP_RAW_POST_DATA']와 $_POST의 차이점에 대한 자세한 그래픽 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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