일반적으로 사용자는 브라우저 웹 양식을 사용하여 서버에 데이터를 게시합니다. 우리는 사용자가 서버에 게시한 데이터를 받아 적절하게 처리하기 위해 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 '$_POST接收:<br/>'; print_r($_POST); echo '<hr/>'; echo '$GLOBALS[\'HTTP_RAW_POST_DATA\']接收:<br/>'; print_r($GLOBALS['HTTP_RAW_POST_DATA']); echo '<hr/>'; echo 'php://input接收:<br/>'; $data = file_get_contents('php://input'); print_r(urldecode($data));
이상이 이 글의 전체 내용입니다. PHP가 포스트 데이터를 수신하는 세 가지 방식을 모두가 이해할 수 있기를 바랍니다.
PHP가 POST 데이터를 수신하는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!