#php
Привет встретил код $body = file_get_contents('php://input'); Этот метод нужен чтобы получить содержимое POST и GET запросов?Чем уже $_POST и $_GEt не устроил? Зачем вообще нужен этот ужас? Читая статью трудно въехать для чего нужны эти самые потоки...Ни примеров ни толквого изложения.... http://www.php.net/manual/ru/wrappers.php.php
Ответы
Ответ 1
чем вас мануал не устраивает? оригинал: php://input is a read-only stream перевод: php://input является потоком только для чтения оригинал: php://input instead of $HTTP_RAW_POST_DATA as it does not depend on special php.ini directives. Moreover, for those cases where $HTTP_RAW_POST_DATA is not populated by default, it is a potentially less memory intensive alternative to activating always_populate_raw_post_data. перевод: В случае POST-запросов предпочтительней использовать php://input вместо $HTTP_RAW_POST_DATA, так как этот метод не зависит от специальных php.ini директив. Кроме того, в тех случаях, где $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее затратно для памяти, чем активация директивы always_populate_raw_post_data. оригинал: php://input is not available with enctype="multipart/form-data" перевод: php://input не доступен с типом содержимого enctype="multipart/form-data" читать надо внимательнейОтвет 2
К примеру вам нужно отправить json сериализованную строку. Передавать это нужно через POST, потому что в GET длина этой самой строки ограничена, кажется, 4мя килобайтами. Что же именно передается POST методом ? А передается вот что: POST /test/script.php HTTP/1.1 Host: site.com Content-Length: xxxx ... и другие заголовки.. paramName1=paramValue1¶mName2=paramValue2... Передавать что-то типа: abc=не хочется, потому что нужно экранировать еще эту строку. Поэтому мы просто скармливаем строку скрипту. На сервер прийдет что-то типа такого: POST /test/script.php HTTP/1.1 Host: site.com Content-Length: xxxx ... и другие заголовки.. {"paramName1": "paramValue2","paramName2": "paramValue2",...} Естественно, сервер не умеет парсить такие запросы, поэтому нам на помощь приходит file_get_contents('php://input'); Мы можем получить то, что нам прислали, без изменений, самим распарсить это и быть счастливым :) Ответ 3
Список методов не ограничивается GET и POST. Например в REST спецификации используются еще PUT, DELETE и еще какие-то. Обрабатываются они соответственно через php://input. А смысл то простой, мы получаем таким образом сырой запрос, очень полезная штука.
Комментариев нет:
Отправить комментарий