1. Plusieurs méthodes permettant à PHP d'obtenir des données POST
Méthode 1. La méthode la plus courante est : $_POST['fieldname'];
Remarque : elle ne peut que être reçu Content-Type : application/x-www-form-urlencoded submit data
Explication : Il s'agit des données POST du formulaire
Méthode 2, file_get_contents("php://input");
Description :
Permet de lire les données brutes du POST.
Il met 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".
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.
La méthode 2 est donc la méthode la plus sûre
Méthode 3. $GLOBALS['HTTP_RAW_POST_DATA'];
Explication :
Toujours générer $HTTP_RAW_POST_DATA La variable contient Il y a du brut Données POST.
Cette variable n'est générée que lorsque des données de 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"
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 Seules les données seront stockées dans $GLOBALS['HTTP_RAW_POST_DATA']
2 Démonstration
1 Comment PHP obtient-il les données XML de POST et analyse les données XML
.
Par exemple, lorsque nous développons un compte d'entreprise WeChat, comment traitons-nous les données auxquelles les utilisateurs répondent ?
Documentation : http://qydev.weixin.qq.com/wiki/index.php?title=Receive Ordinary Messages
Vérifiez d'abord la documentation et vous saurez : Une fois le mode développement activé, lorsque l'utilisateur réponses à l'application, le serveur WeChat POST une chaîne de données XML à l'URL de rappel vérifiée
Supposons que l'URL soit http://www.xxx.com
Méthode de requête HTTP : POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFS×tamp=13500001234&nonce=123412323
Le contenu XML de POST est :
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> <AgentID>1</AgentID> </xml>
Alors comment recevez-vous ce contenu ?
Vous pouvez l'utiliser à ce moment : Méthode 2 (file_get_contents("php://input")), Méthode 3 ($GLOBALS['HTTP_RAW_POST_DATA'])
Méthode 2 (file_get_contents("php : //input") ):
$input = file_get_contents("php://input"); //接收POST数据 $xml = simplexml_load_string($input); //提取POST数据为simplexml对象 var_dump($xml);
Méthode 3 ($GLOBALS['HTTP_RAW_POST_DATA'])
$input = $GLOBALS['HTTP_RAW_POST_DATA']; libxml_disable_entity_loader(true); $xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA); var_dump($xml);
Plus de PHP Obtenez POST Veuillez prêter attention au site Web PHP chinois pour des articles connexes sur plusieurs façons de résumer les données !