Maison >développement back-end >tutoriel php >Pourquoi PHP ne peut-il accepter que la valeur get mais pas la valeur POST ?

Pourquoi PHP ne peut-il accepter que la valeur get mais pas la valeur POST ?

小云云
小云云original
2018-03-15 13:04:033234parcourir

PHP utilise généralement les valeurs get ou post. Cet article vous explique principalement pourquoi php ne peut accepter que les valeurs get mais ne peut pas accepter les valeurs POST.

1. Plusieurs façons d'obtenir des données POST avec PHP

Méthode 1. La méthode la plus courante est : $_POST['fieldname'];

Remarque : ne peut recevoir que les données soumises par Content-Type : application/x-www-form-urlencoded
Explication : Il s'agit des données du formulaire POST

Méthode 2, file_get_contents("php://input");

Description :
Permet de lire les données originales du POST.

(Lorsque vous utilisez l'outil de test d'interface, vous ne pouvez utiliser cette méthode que si l'en-tête est défini sur content-type : application/json.)
Comparé à $HTTP_RAW_POST_DATA, il donne Il met moins de pression sur la mémoire et ne nécessite aucun paramètre php.ini spécial.
php://input ne peut pas être utilisé avec enctype="multipart/form-data".
Explication :
Pour les données POST sans Content-Type spécifié, vous pouvez utiliser file_get_contents("php://input");
En fait, cette méthode peut être utilisée pour recevoir n'importe quelle donnée POST en utilisant PHP. Quel que soit le type de contenu, l'inclusion de flux de fichiers binaires est également acceptable.
Donc, utiliser la méthode 2 est la méthode la plus sûre

Méthode 3. $GLOBALS['HTTP_RAW_POST_DATA'];

Instructions :
Total La variable $HTTP_RAW_POST_DATA est générée pour contenir les données POST brutes.
Cette variable n'est générée que lorsque des données avec des types MIME non reconnus sont rencontrées.
$HTTP_RAW_POST_DATA n'est pas disponible pour les données du formulaire enctype="multipart/form-data"
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 :
$GLOBALS['HTTP_RAW_POST_DATA'] stocke les données originales du POST.
$_POST ou $_REQUEST stocke les données formatées par PHP sous la forme clé=>valeur.
Mais le fait que les données POST soient enregistrées dans $GLOBALS['HTTP_RAW_POST_DATA'] dépend du paramètre centent-Type, c'est-à-dire que le Content-Type doit être explicitement spécifié lors du POSTing des données : application/x-www-form-urlencoded , POST Les données seront stockées dans $GLOBALS['HTTP_RAW_POST_DATA'].

Recommandations associées :

Expliquez la différence entre obtenir et publier

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