2013-11-22 6 views
1

Проблемы с multipart/form-data заставили меня вручную анализировать параметры запроса POST, как я уже делаю для запросов PUT. Для этой цели я использовал этот код:php: // ввод пуст по запросу POST

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

Но я полагал, что php://input всегда пусто почты, по крайней мере, для php-fpm SAPI.

Вот несколько фото от отладчика. запрос POST:

empty $rawData

PUT с теми же Params:

filled $rawData

Есть ли способ, чтобы получить сырец POST тело запроса? Заранее спасибо.

+2

В то же время указатель на справочную страницу PHP, почему необработанные данные недоступны для POST http://www.php.net/manual/en/wrappers.php.php –

+1

RE: комментарий выше, это ДОСТУПНО для POST, но НЕ ДОСТУПНО с '' enctype = "multipart/form-data" 'forms;) –

+0

Правильно, это то, о чем мы говорим (см. Вопрос). –

ответ

7

До PHP 5.4$HTTP_RAW_POST_DATA не доступен с enctype="multipart/form-data" (за исключением некоторых решений SAPI нс), объяснения здесь:

Я предлагаю вам взглянуть на пару ответов на существующие вопросы:

От PHP 5.4+ вы можете использовать директиву php.inienable_post_data_reading отключить PHP потребляя исходных данных (следовательно, обрабатывать его), имейте в виду, что $_POST и $_FILES не будут заполнены, хотя (см Vitaly Chirkov answer).

-1

Не могли бы вы попробовать

var_dump($HTTP_RAW_POST_DATA); 

Источник:

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

=== Edit - это не будет показывать необработанные почтовые данные 'многочастного/форм-данных'

+2

Это не работает '$ HTTP_RAW_POST_DATA недоступно с enctype =" multipart/form-data "': http://www.php.net/manual/en/ini.core.php#ini. always-populate-raw-post-data –

+0

А, это верно. Спасибо, что разъяснил это. –

+1

Похоже: ** php: // вход не доступен с enctype = "multipart/form-data" ** также [php.net/manual/en/wrappers.php](http://us.php.net /manual/en/wrappers.php.php) –

Смежные вопросы