Comment accéder aux données POST en PHP?

j'ai besoin d'écrire une page PHP qui accepterait un document XML envoyé sur une demande de poste comme ceci:

POST /mypage.php HTTP/1.1
Host: myhost.com
Content-Type: application/xml
Content-Length: ...

<?xml version="1.0" encoding="utf-8"?>
<data>
 ...
</data>

il ne s'agit pas de données provenant d'un quelconque format HTML, mais d'un simple document XML.

Comment puis-je accéder à ce XML dans mon code PHP?

25
demandé sur p.campbell 2009-03-20 00:27:17

7 réponses

php://input . Par exemple, vous pouvez utiliser:

$rawdata = file_get_contents('php://input');

ou

$rootNode = simplexml_load_file('php://input');

l'alternative, en utilisant $HTTP_RAW_POST_DATA , fonctionne aussi - mais il est plus lent et nécessite la configuration de PHP always_populate_raw_post_data .

37
répondu phihag 2009-03-19 21:30:02
5
répondu Gumbo 2009-03-19 21:29:49

http://us.php.net/manual/en/reserved.variables.httprawpostdata.php

$HTTP_RAW_POST_DATA devrait être disponible en supposant que le type de contenu de la demande n'a pas été multipart/form-data

2
répondu Bob Gettys 2009-03-19 21:30:09
2
répondu Ionuț G. Stan 2009-03-19 21:31:04

vous voulez probablement utiliser le PHP input . Quelque chose comme

$postText = trim(file_get_contents('php://input'));
1
répondu Rob Di Marco 2009-03-19 21:33:40

N'importe lequel de ceux-ci fonctionnerait:

$HTTP_RAW_POST_DATA variable or the php://input stream.

Cependant, pour le

$HTTP_RAW_POST_DATA variable

pour travailler, vous pourriez avoir besoin de changer .paramétrage ini dans votre fichier de configuration

0
répondu fidazik 2014-11-04 14:06:00

si vous utilisez print_r($_POST); vous pourrez voir ce que vous avez. Sauf si je suis en manque de quelque chose... Modifier: nvm, totaly a oublié les données brutes: /

-2
répondu Alekc 2009-03-19 21:30:13