Maison > développement back-end > tutoriel php > Explication détaillée du flux d'entrée php://input

Explication détaillée du flux d'entrée php://input

*文
Libérer: 2023-03-18 18:32:01
original
4230 Les gens l'ont consulté

Cet article présente principalement des exemples de flux d'entrée PHP php://input et fournit des exemples pour une étude approfondie du flux d'entrée php://input. Les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.

Quant à l'introduction de php://input, le document du manuel officiel de PHP contient un paragraphe qui le décrit clairement.
« php://input vous permet de lire des données POST brutes. C'est une alternative moins gourmande en mémoire que $HTTP_RAW_POST_DATA et ne nécessite aucune directive php.ini spéciale. non disponible avec enctype="multipart/form-data".

Traduit, c'est comme ça :
"php://input est OK Lire les données POST non traitées. Comparé à $HTTP_RAW_POST_DATA, il exerce moins de pression sur la mémoire et ne nécessite pas de paramètres php.ini spéciaux. php://input ne peut pas être utilisé pour enctype=multipart/form-data”
Le résumé est le suivant :

  • 1), Coentent-Type ne prend que le value application/ Dans les deux cas de x-www-data-urlencoded et multipart/form-data, PHP remplira les données correspondantes dans le paquet de requête http dans la variable globale $_POST

  • 2) , lorsque PHP ne peut pas reconnaître le type Content-Type, les données correspondantes dans le package de requête http seront renseignées dans la variable $HTTP_RAW_POST_DATA

  • 3), uniquement le Coentent- Le type est multipart/form- data, PHP ne remplira pas les données correspondantes dans le paquet de requête http dans php://input, sinon la longueur sera renseignée, spécifiée par Coentent-Length 🎜>4). Content-Type est application/x-www-data-urlencoded, les données php://input sont cohérentes avec les données $_POST

  • 5), php://input data. est toujours le même que $HTTP_RAW_POST_DATA, mais php://input est plus efficace que $HTTP_RAW_POST_DATA et ne nécessite pas de paramètres spéciaux php.ini

  • 6), PHP La partie query_path du Le champ PATH sera renseigné dans la variable globale $_GET Normalement, le corps de la requête http soumise par la méthode GET est vide >

  • Pour résumer, lorsque vous ne pouvez pas obtenir les données de rappel de l'APP ou de certains. interfaces utilisant $_POST, essayez d'utiliser php://input
  • 1. Accepter les données XML

2. Mini programme pour télécharger des photos sur le serveur depuis un téléphone mobile


Envoyer

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

//发送xml数据

$xml = &#39;<xml>xmldata</xml>&#39;;//要发送的xml

$url = &#39;http://localhost/test/getXML.php&#39;;//接收XML地址

$header = &#39;Content-type: text/xml&#39;;//定义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);

Copier après la connexion




Recevoir


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

//@file phpinput_post.php

$data=file_get_contents(&#39;btn.png&#39;);

$http_entity_body = $data;

$http_entity_type = &#39;application/x-www-form-urlencoded&#39;;

$http_entity_length = strlen($http_entity_body);

$host = &#39;127.0.0.1&#39;;

$port = 80;

$path = &#39;/image.php&#39;;

$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;

}

Copier après la connexion


3 : Récupérer le texte original de la requête HTTP


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/**

 *Recieve image data

 **/

error_reporting(E_ALL);

 

function get_contents() {

 $xmlstr= file_get_contents("php://input");

 $filename=file_put_contentsxmltime().&#39;.png&#39;;

 if(($filename,$str)){

 echo &#39;success&#39;;

 }else{

 echo &#39;failed&#39;;

 }

  }

get_contents();

Copier après la connexion



Recommandations associées :


Obtenir un post PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

 * 获取HTTP请求原文

 * @return string

 */

function get_http_raw(){

 $raw = &#39;&#39;;

 // (1) 请求行

 $raw .= $_SERVER[&#39;REQUEST_METHOD&#39;] . &#39; &#39; . $_SERVER[&#39;REQUEST_URI&#39;] . &#39; &#39; . $_SERVER[&#39;SERVER_PROTOCOL&#39;] . "\r\n";

 // (2) 请求Headers

 foreach ($_SERVER as $key => $value) {

 if (substr($key , 0 , 5) === &#39;HTTP_&#39;) {

  $key = substr($key , 5);

  $key = str_replace(&#39;_&#39; , &#39;-&#39; , $key);

  $raw .= $key . &#39;: &#39; . $value . "\r\n";

 }

 }

 // (3) 空行

 $raw .= "\r\n";

 // (4) 请求Body

 $raw .= file_get_contents(&#39;php://input&#39;);

 return $raw;

}

Copier après la connexion


La méthode de publication php soumet un tableau

php publie une grande quantité de données Quand j'ai découvert la solution au problème de perte de données, publiez le didacticiel Data Loss_PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal