>  기사  >  백엔드 개발  >  PHP가 POST 데이터를 수신하는 방법에 대한 간략한 토론

PHP가 POST 데이터를 수신하는 방법에 대한 간략한 토론

高洛峰
高洛峰원래의
2016-12-23 16:24:453176검색

일반적으로 사용자는 브라우저 웹 양식을 사용하여 서버에 데이터를 게시합니다. 우리는 사용자가 서버에 게시한 데이터를 받아 적절하게 처리하기 위해 PHP를 사용합니다. 그러나 경우에 따라 사용자가 클라이언트 소프트웨어를 사용하여 서버 PHP 프로그램에 게시 데이터를 보내고 $_POST를 사용하여 이를 식별할 수 없는 경우 어떻게 처리해야 합니까?

데이터를 받는 $_POST 메소드

$_POST 메소드는 HTTP POST 메소드를 통해 전달되는 변수의 배열로 자동 전역변수이다. 예를 들어, $_POST['name']을 사용하는 경우 웹 양식 및 웹 페이지에서 게시된 데이터를 비동기적으로 수신할 수 있습니다. 즉, $_POST는 Content-Type: application/x-www 문서 유형으로 제출된 데이터만 수신할 수 있습니다. -form-urlencoded.

$GLOBALS['HTTP_RAW_POST_DATA'] 데이터 수신 방법

우편으로 보낸 데이터가 text/xml, SOAP 등 PHP가 인식할 수 있는 문서 형식이 아닌 경우 등, $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여 수신할 수 있습니다. $HTTP_RAW_POST_DATA 변수에는 원시 POST 데이터가 포함되어 있습니다. 이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견된 경우에만 생성됩니다. enctype="multipart/form-data" 양식 데이터에는 $HTTP_RAW_POST_DATA를 사용할 수 없습니다. 즉, $HTTP_RAW_POST_DATA를 사용하면 웹 양식에서 게시된 데이터를 받을 수 없습니다.

php://input을 통해 데이터 수신

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

예를 들어, 사용자가 클라이언트 애플리케이션을 사용하여 파일을 서버에 게시하는 경우, 파일 내용에는 관심이 없지만 파일을 서버에 완전히 저장하려고 합니다. 다음 코드를 사용할 수 있습니다.

$input = file_get_contents('php://input');
file_put_contents($original, $input); //$original为服务器上的文件

위 코드는 file_get_contents('php://input')를 사용하여 게시물 데이터를 받은 후 다음을 씁니다. 실제로는 클라이언트에서 서버로 파일을 업로드하는 것으로 이해될 수 있습니다. 특히 PHP 개발이 C, C++ 및 기타 애플리케이션 개발과 공동으로 제품을 개발해야 하는 경우에는 더욱 그렇습니다. .

다음은 POST 데이터 처리를 수신하는 세 가지 방법인 $_POST, $GLOBALS['HTTP_RAW_POST_DATA'] 및 php://input을 보여주는 작은 예입니다.

a.html

<form name="demo_form" action="post.php" method="post">
  <p><label>Name: </label><input type="text" class="input" name="name"></p>
  <p><label>Address: </label><input type="text" class="input" name="address"></p>
  <p><input type="submit" name="submit" class="btn" value="Submit"></p>
</form>

post.php

header("Content-type:text/html;charset=utf-8");
  
echo &#39;$_POST接收:<br/>&#39;;
print_r($_POST);
echo &#39;<hr/>&#39;;
  
echo &#39;$GLOBALS[\&#39;HTTP_RAW_POST_DATA\&#39;]接收:<br/>&#39;;
print_r($GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]);
echo &#39;<hr/>&#39;;
  
echo &#39;php://input接收:<br/>&#39;;
$data = file_get_contents(&#39;php://input&#39;);
print_r(urldecode($data));

이상이 이 글의 전체 내용입니다. PHP가 포스트 데이터를 수신하는 세 가지 방식을 모두가 이해할 수 있기를 바랍니다.

PHP가 POST 데이터를 수신하는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


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