apache — чтение неключевых / значений POST-данных из переполнения стека

У меня есть система, которая отправляет данные в URL-адрес без отправки пар ключ / значение, но вместо этого с использованием полезной нагрузки XML. Мне нужно прочитать эти данные XML, используя PHP под Apache, но PHP $_POST Массив предназначен для пар ключ / значение и, следовательно, является пустым, поскольку ключи не указаны.

Я пытался читать с php://input а также php://stdin, но это также пусто.

Как я могу прочитать необработанные данные POST, используя PHP? Я не могу контролировать ввод, так как он генерируется сторонним приложением. Представьте, что это RESTful URL, который принимает полезную нагрузку XML.

0

Решение

Согласно руководству по PHP, php://input is not available with enctype="multipart/form-data"., Если это то, что вам отправляют, PHP не позволит вам получить доступ к необработанным данным.
Один обходной путь к этой проблеме:
(источник: https://stackoverflow.com/questions/1361673/get-raw-post-data)

Добавьте это в ваш apache.conf:

<Location "/backend/XXX.php">
SetEnvIf Content-Type ^(multipart/form-data)(.*) MULTIPART_CTYPE=$1$2
RequestHeader set Content-Type application/x-httpd-php env=MULTIPART_CTYPE
RequestHeader set X-Real-Content-Type %{MULTIPART_CTYPE}e env=MULTIPART_CTYPE
</Location>

Начиная с PHP 5.4, есть также параметр ini «enable-post-data-read» (http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading).

Из руководства по PHP: «Отключение этой опции приводит к тому, что $ _POST и $ _FILES не заполняются. Единственный способ чтения постданных будет через обертку потока ввода php: //. Это может быть полезно для запросов прокси или для обработки данных POST в памяти эффективная мода. «

Попробуйте отключить этот параметр и затем читать из php://input,

1

Другие решения

Вы можете проверить, есть ли в вашем сообщении какая-либо информация, выполнив:

print_r( $_POST );

То, что вы хотели бы сделать, это отправка данных XML в ключ с именем xml или что-то подобное, что приводит к $_POST['xml'] = 'your xml code'

РЕДАКТИРОВАТЬ:

Также было бы хорошо, если бы вы могли опубликовать код, который вы используете для создания $_POST,

0

По вопросам рекламы [email protected]