Данные и так передаются по POST (или GET), но есть нюансы их обработки на стороне сервера.
1. POST и GET данные в виде
parameter=value¶m2=val2 автоматически обрабатываются сервером и заполняются глобальные массивы $_POST/$_GET/$_REQUEST:
$_POST['parameter'] = value;
$_POST['param2'] = val2;
GET-параметры при этом ещё и автоматически декодируются по urldecode().
Через
php://input можно получить "сырые" необработанные данные.
2. Методом POST можно прислать, например, объект JSON, указав 'Content-type: application/json; charset=utf-8'. При этом массив-обёртка $_POST будет пуста, тк не присылается Имя_Параметра, а присылается только Значение_Параметра, и сервер не обрабатывает такие данные автоматически.
Получить такие данные можно только через
php://input, так как глобальные массивы $_POST/$_GET будут пустыми.