Php://input

1,00
р.
Привет встретил код
$body = file_get_contents('php://input')
Этот метод нужен чтобы получить содержимое POST и GET запросов?Чем уже $_POST и $_GEt не устроил? Зачем вообще нужен этот ужас?
Читая статью трудно въехать для чего нужны эти самые потоки...Ни примеров ни толквого изложения.... http://www.php.net/manual/ru/wrappers.php.php


Ответ
К примеру вам нужно отправить json сериализованную строку. Передавать это нужно через POST, потому что в GET длина этой самой строки ограничена, кажется, 4мя килобайтами.
Что же именно передается POST методом ?
А передается вот что:
POST /testcript.php HTTP/1.1 Host: site.com Content-Length: xxxx ... и другие заголовки..
paramName1=paramValue1&paramName2=paramValue2...
Передавать что-то типа: abc= не хочется, потому что нужно экранировать еще эту строку.
Поэтому мы просто скармливаем строку скрипту. На сервер прийдет что-то типа такого:
POST /testcript.php HTTP/1.1 Host: site.com Content-Length: xxxx ... и другие заголовки..
{"paramName1": "paramValue2","paramName2": "paramValue2",...}
Естественно, сервер не умеет парсить такие запросы, поэтому нам на помощь приходит file_get_contents('php://input')
Мы можем получить то, что нам прислали, без изменений, самим распарсить это и быть счастливым :)