Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan php://input dalam PHP
php://input boleh membaca data POST yang tidak diproses Kaedah penggunaannya adalah seperti "$xmldata = file_get_contents("php://input");", yang digunakan untuk menerima data xml.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3.
Bagaimana untuk menggunakan php://input dalam PHP?
Bagi pengenalan kepada php://input, dokumen manual PHP rasmi mempunyai perenggan yang menggariskannya dengan jelas.
“php://input membolehkan anda membaca data POST mentah Ia adalah alternatif yang kurang intensif memori kepada$HTTP_RAW_POST_DATA dan tidak memerlukan sebarang arahan php.ini khas tidak tersedia dengan enctype="multipart/form-data".
Diterjemah, ia adalah seperti ini:
"php://input OK Baca data POST yang belum diproses. Berbanding dengan $HTTP_RAW_POST_DATA, ia mengurangkan tekanan pada memori dan tidak memerlukan tetapan php.ini khas. php://input tidak boleh digunakan untuk enctype=multipart/form-data”
Ringkasannya adalah seperti berikut:
1), Coentent-Type hanya mengambil aplikasi nilai/x-www -data- Dalam kedua-dua kes urlencoded dan multipart/form-data, PHP akan mengisi data yang sepadan dalam paket permintaan http ke dalam pembolehubah global $_POST
2), apabila jenis Content-Type bukan diiktiraf oleh PHP, Data yang sepadan dalam paket permintaan http akan diisi dalam pembolehubah $HTTP_RAW_POST_DATA
3). Hanya apabila Coentent-Type adalah multipart/form-data, PHP tidak akan mengisi data yang sepadan dalam paket permintaan http php://input, jika tidak panjang yang diisi ditentukan oleh Coetent-Length 4), hanya apabila Content-Type adalah application/x-www-data-urlencoded, php:/ /input data. konsisten dengan data $_POST
5), php://input data sentiasa sama dengan $HTTP_RAW_POST_DATA, tetapi php://input lebih cekap daripada $HTTP_RAW_POST_DATA dan tidak perlu istimewa. Tetapkan php.ini
6), PHP akan mengisi bahagian query_path medan PATH ke dalam pembolehubah global $_GET Biasanya, isi permintaan http yang dikemukakan oleh kaedah GET adalah kosong , apabila anda tidak boleh mendapatkan data panggil balik daripada APP atau beberapa antara muka menggunakan $_POST, cuba gunakan php://input
1 Terima data xml2. Program kecil untuk memuat naik gambar ke pelayan dari telefon mudah alih anda
//发送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);
Hantar
//@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: Dapatkan teks asal permintaan 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();
Di atas ialah tiga kaedah untuk Aliran input PHP Tujuan Xiaolizi adalah untuk membantu semua orang memahami aliran input PHP dengan lebih tepat saya harap anda akan memperoleh sesuatu
Pembelajaran yang disyorkan: "/** * 获取HTTP请求原文 * @return string */ function get_http_raw(){ $raw = ''; // (1) 请求行 $raw .= $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . ' ' . $_SERVER['SERVER_PROTOCOL'] . "\r\n"; // (2) 请求Headers foreach ($_SERVER as $key => $value) { if (substr($key , 0 , 5) === 'HTTP_') { $key = substr($key , 5); $key = str_replace('_' , '-' , $key); $raw .= $key . ': ' . $value . "\r\n"; } } // (3) 空行 $raw .= "\r\n"; // (4) 请求Body $raw .= file_get_contents('php://input'); return $raw; }Tutorial Video PHP
"
.Atas ialah kandungan terperinci Cara menggunakan php://input dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!