Maison  >  Article  >  développement back-end  >  Explication graphique détaillée de la différence entre $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST en PHP

Explication graphique détaillée de la différence entre $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST en PHP

墨辰丷
墨辰丷original
2018-05-21 09:50:542140parcourir

Cet article présente principalement la différence entre $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST en PHP. Il analyse les fonctions et l'utilisation de $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST sur la base d'exemples spécifiques. à

pour plus de détails comme suit :

$_POST : Un tableau composé de variables transmises via la méthode HTTP POST. est une variable globale automatique.
$GLOBALS['HTTP_RAW_POST_DATA']  : Générez toujours la variable $HTTP_RAW_POST_DATA contenant les données POST brutes. Cette variable n'est générée que lorsque des données d'un type MIME non reconnu sont rencontrées. $HTTP_RAW_POST_DATA n'est pas disponible pour les données du formulaire enctype="multipart/form-data".

C'est-à-dire que fondamentalement $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST sont identiques.
Mais si les données publiées ne sont pas reconnues par PHP, vous pouvez utiliser $GLOBALS['HTTP_RAW_POST_DATA'] pour les recevoir, comme du texte/xml ou du savon, etc.

Explication supplémentaire : Le type de données reconnu par PHP par défaut est le type de données standard application/x-www.form-urlencoded.

Voici ce que dit le manuel :

Générez toujours des variables contenant les données POST d'origine. Sinon, cette variable n'est générée que lorsque des données d'un type MIME non reconnu sont rencontrées. Cependant, un meilleur moyen d'accéder aux données brutes POST est php://input. $HTTP_RAW_POST_DATA n'est pas disponible pour les données de formulaire enctype="multipart/form-data".

Question : Est-ce que $HTTP_RAW_POST_DATA == $_POST ?

Selon le manuel, la réponse devrait être non.
S'ils sont différents, quelle est leur différence ?

Je connais la réponse, comme suit :

Les informations RAW / HTTP POst non interprétées sont accessibles avec :
$GLOBALS['HTTP_RAW_POST_DATA']
C'est utile dans les cas où le type de contenu de la publication n'est pas quelque chose que PHP comprend (comme text/xml).

Autrement dit, fondamentalement $GLOBALS['HTTP_RAW_POST_DATA'] et $_POST sont identiques. MaisSi les données publiées ne sont pas reconnues par PHP, vous pouvez utiliser $GLOBALS['HTTP_RAW_POST_DATA'] pour les recevoir, comme du texte/xml ou du savon, etc..

Le type de données reconnu par PHP par défaut est le type de données standard application/x-www.form-urlencoded

Utilisez le type Content-Type=text/xml pour soumettre le contenu d'un XML document au serveur PHP, comment obtenir ces données POST.

Les informations RAW / HTTP POST non interprétées sont accessibles avec : $GLOBALS['HTTP_RAW_POST_DATA'] Ceci est utile dans les cas où le type de contenu de la publication n'est pas quelque chose que PHP comprend (comme text/xml ).

Puisque PHP ne reconnaît que les types de données standard application/x-www.form-urlencoded par défaut, le contenu tel que text/xml ne peut pas être analysé dans un tableau $_POST, le prototype est donc conservé , remettez-le à $GLOBALS['HTTP_RAW_POST_DATA'] pour le recevoir.

Il existe également un php://input qui peut également implémenter cette fonction

php://input permet de lire les données originales du POST. Il exerce moins de pression sur la mémoire que $HTTP_RAW_POST_DATA et ne nécessite aucun paramètre php.ini spécial. php://input ne peut pas être utilisé avec enctype="multipart/form-data".

Application :

a.htm :

<form action="post.php" method="post">
<input type="text" name="user">
<input type="password" name="password">
<input type="submit">
</form>

post.php :

<? echo file_get_contents("php://input"); ?>

Recommandations associées :

La configuration PHP de Tomcat ne peut pas utiliser $_post, $_get

La différence entre $_GET et $_POST en PHP

À propos de $ en php _POSTExplication avec exemples

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!

Déclaration:
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