이 글은 주로 PHP 입력 스트림 php://input 예제를 소개하고, 입력 스트림 php://input에 대한 심층 연구를 위한 예제를 제공합니다. 관심 있는 친구들은 이를 참고할 수 있습니다. 그것이 모두에게 도움이 되기를 바랍니다.
php://input 소개에 대해 PHP 공식 매뉴얼 문서에는 이를 명확하게 설명하는 단락이 있습니다.
“php://input을 사용하면 원시 POST 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA에 비해 메모리 사용량이 적고 특별한 php.ini 지시문이 필요하지 않습니다. enctype=” multipart/form-data".
번역하면 다음과 같습니다:
"php://input은 처리되지 않은 POST 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA와 비교할 때 메모리에 대한 부담이 적고 특별한 php.ini 설정이 필요하지 않습니다. php://input은 enctype=multipart/form-data에 사용할 수 없습니다.
요약은 다음과 같습니다.
1) Coentent-Type은 값이 application/x-www-data-인 경우에만 사용할 수 있습니다. urlencoded 및 multipart/form- 두 데이터 경우 모두 PHP는 http 요청 패킷의 해당 데이터를 전역 변수 $_POST
2)에 채웁니다. PHP가 Content-Type 유형을 인식하지 못하는 경우 채워집니다. http 요청 패킷의 해당 데이터에 데이터가 $HTTP_RAW_POST_DATA
3) 변수에 채워집니다. Coentent-Type이 multipart/form-data인 경우에만 PHP는 http 요청에 해당 데이터를 채우지 않습니다. 그렇지 않으면 채워진 길이가 Coentent-Length에 의해 지정됩니다.
4). urlencoded, php://input 데이터는 $_POST 데이터와 일치합니다.
5) php://input 데이터는 항상 $HTTP_RAW_POST_DATA와 동일하지만 php://input은 $HTTP_RAW_POST_DATA보다 효율적입니다. php.ini
6), PHP는 PATH 필드의 query_path 부분에 전역 변수 $_GET를 입력합니다. 일반적으로 GET 메서드에 의해 제출된 http 요청의 본문은 비어 있습니다. . 요약하면 $_POST를 사용하여 APP를 얻을 수 없거나 일부 인터페이스에서 데이터를 호출할 때 php://input
//发送xml数据 $xml = '<xml>xmldata</xml>';//要发送的xml $url = 'http://localhost/test/getXML.php';//接收XML地址 $header = 'Content-type: text/xml';//定义content-type为xml $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL, $url);//设置链接 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头 curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);//POST数据 $response = curl_exec($ch);//接收返回信息 if(curl_errno($ch)){//出错则显示错误信息 print curl_error($ch); } curl_close($ch); //关闭curl链接 echo $response;//显示返回信息 // php用file_get_contents("php://input")或者$HTTP_RAW_POST_DATA可以接收xml数据 $xmldata = file_get_contents("php://input"); $data = (array)simplexml_load_string($xmldata);
Receive
//@file phpinput_post.php
$data=file_get_contents('btn.png');
$http_entity_body = $data;
$http_entity_type = 'application/x-www-form-urlencoded';
$http_entity_length = strlen($http_entity_body);
$host = '127.0.0.1';
$port = 80;
$path = '/image.php';
$fp = fsockopen($host, $port, $error_no, $error_desc, 30);
if ($fp){
fputs($fp, "POST {$path} HTTP/1.1\r\n");
fputs($fp, "Host: {$host}\r\n");
fputs($fp, "Content-Type: {$http_entity_type}\r\n");
fputs($fp, "Content-Length: {$http_entity_length}\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $http_entity_body . "\r\n\r\n");
while (!feof($fp)) {
$d .= fgets($fp, 4096);
}
fclose($fp);
echo $d;
}
3: HTTP 요청의 원본 텍스트
/** *Recieve image data **/ error_reporting(E_ALL); function get_contents() { $xmlstr= file_get_contents("php://input"); $filename=file_put_contentsxmltime().'.png'; if(($filename,$str)){ echo 'success'; }else{ echo 'failed'; } } get_contents();
PHP 게시 get
배열을 제출하는 PHP 게시 방법
php 게시물 데이터 대용량 데이터 게시 시 손실 문제 해결 방법, 데이터 손실 게시_PHP 튜토리얼
위 내용은 php://input 입력 스트림에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!