React PHP 获取 POST 数据
React PHP get POST data
我正在尝试在 ReactPHP Web 服务器上运行一个简单的 Web 应用程序,但我不知道从哪里获取来自 HTML 表单的 POST 数据。服务器定义为:
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();
当我 post 使用 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 请求时,查询字符串中传递的数据可以在 $request
对象的 query
属性中找到。
那么,我在哪里可以找到通过 POST 请求传递的数据?
我在这里重复对我的问题的最后编辑,所以这个问题可以被标记为已回答。
没关系,找到答案了here。基本上,React PHP 似乎还不支持读取 POST 数据的简单方法。但是,我们可以做的是在数据到来时立即读取数据,观察 $request
对象的事件 data
:
$request->on('data', function($data) {
// Here $data contains our POST data.
// The $request needs to be manually ended, though.
});
我正在尝试在 ReactPHP Web 服务器上运行一个简单的 Web 应用程序,但我不知道从哪里获取来自 HTML 表单的 POST 数据。服务器定义为:
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();
当我 post 使用 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 请求时,查询字符串中传递的数据可以在 $request
对象的 query
属性中找到。
那么,我在哪里可以找到通过 POST 请求传递的数据?
我在这里重复对我的问题的最后编辑,所以这个问题可以被标记为已回答。
没关系,找到答案了here。基本上,React PHP 似乎还不支持读取 POST 数据的简单方法。但是,我们可以做的是在数据到来时立即读取数据,观察 $request
对象的事件 data
:
$request->on('data', function($data) {
// Here $data contains our POST data.
// The $request needs to be manually ended, though.
});