Я пытаюсь запустить простое веб-приложение через веб-сервер ReactPHP, но не могу понять, где взять данные POST, поступающие из HTML-формы. Сервер определяется как:
include 'vendor/autoload.php';
register_shutdown_function(function() {
echo implode(PHP_EOL, error_get_last()), PHP_EOL;
});
$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http = new React\Http\Server($socket);
$http->on('request', function(React\Http\Request $request, React\Http\Response $response) {
print_r($request);
$response->writeHead(200, array('Content-type' => 'text/html'));
$response->end('<form method="POST"><input type="text" name="text"><input type="submit" name="submit" value="Submit"></form>');
});
$socket->listen(9000);
$loop->run();
Когда я публикую некоторую строку, используя форму HTML, $request
Объект при печати на консоли выглядит так:
React\Http\Request Object
(
[readable:React\Http\Request:private] => 1
[method:React\Http\Request:private] => POST
[path:React\Http\Request:private] => /
[query:React\Http\Request:private] => Array
(
)
[httpVersion:React\Http\Request:private] => 1.1
[headers:React\Http\Request:private] => Array
(
[User-Agent] => Opera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.16
[Host] => localhost:9000
[Accept] => text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
[Accept-Language] => it,en;q=0.9
[Accept-Encoding] => gzip, deflate
[Referer] => http://localhost:9000/
[Connection] => Keep-Alive
[Content-Length] => 24
[Content-Type] => application/x-www-form-urlencoded
)
[listeners:protected] => Array
(
)
)
Здесь я нигде не могу найти свои данные. Я думал, что это должно быть расположено в query
собственность, но она пуста.
Когда я делаю GET-запросы, вместо этого данные, передаваемые в строке запроса, можно найти внутри query
собственность $request
объект.
Итак, где я могу найти данные, переданные с помощью запросов POST?
Я повторяю последнее изменение моего вопроса здесь, так что этот вопрос может быть помечен как ответ.
Неважно, нашел ответ Вот. Похоже, что React PHP пока не поддерживает простой способ чтения данных POST. Что мы можем сделать, так это прочитать данные, как только они появятся, наблюдая за событием data
из $request
объект:
$request->on('data', function($data) {
// Here $data contains our POST data.
// The $request needs to be manually ended, though.
});
Других решений пока нет …