React PHP获取POST数据

时间:2015-01-03 19:06:14

标签: php post webserver reactphp

我正在尝试通过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();

当我使用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请求传递的数据?

1 个答案:

答案 0 :(得分:2)

我在这里重复我的问题的最后一次编辑,所以这个问题可以标记为已回答。

没关系,找到答案here。基本上,似乎React PHP不支持一种简单的方法来读取POST数据。但是,我们可以做的是,一旦看到数据,就会看到data对象的事件$request

$request->on('data', function($data) {
  // Here $data contains our POST data.
  // The $request needs to be manually ended, though.
});