Как получить доступ к данным POST в PHP? - PullRequest
26 голосов
/ 20 марта 2009

Мне нужно написать страницу PHP, которая бы принимала XML-документ, отправленный по запросу POST, например:

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

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

Это не данные из какой-либо формы HTML, а простой документ XML.

Как я могу получить доступ к этому XML в моем коде PHP?

Ответы [ 7 ]

38 голосов
/ 20 марта 2009

Чтение из php://input. Например, вы можете использовать:

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

или

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

Альтернатива, использующая $HTTP_RAW_POST_DATA, тоже работает - но она медленнее и требует настройки PHP always_populate_raw_post_data.

5 голосов
/ 20 марта 2009
2 голосов
/ 20 марта 2009
2 голосов
/ 20 марта 2009

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

$ HTTP_RAW_POST_DATA должен быть доступен при условии, что тип содержимого запроса не является multipart / form-data

1 голос
/ 20 марта 2009

Возможно, вы захотите использовать PHP input . Что-то вроде

$postText = trim(file_get_contents('php://input'));
0 голосов
/ 04 ноября 2014

Любой из них будет работать:

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

Однако для

$HTTP_RAW_POST_DATA variable

для работы может потребоваться изменить настройку .ini в файле конфигурации

0 голосов
/ 20 марта 2009

Если вы используете print_r ($ _ POST); Вы сможете увидеть, что вы получили. Если я что-то упустил ... Редактировать: NVM, полностью забыл о сырых данных: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...