如何从请求获取POST数据带有套接字的PHP上的HTTP服务器

问题描述

我在带套接字的PHP上找到了简单HTTP服务器的代码。对于测试,我尝试使用其标头响应客户端。有用。但是如何获取其POST数据? while之后,$headers仍然不包含POST数据。

<?PHP

$socket = stream_socket_server("tcp://0.0.0.0:8000",$errno,$errstr);

if (!$socket)
{
    die("$errstr ($errno)\n");
}

$connects = [];
while (true)
{
    // creating an array of listening sockets
    $read = $connects;
    $read[] = $socket;
    $write = $except = null;
    
    // wait for sockets to read (no timeout)
    if (!stream_select($read,$write,$except,null))
    {
        break;
    }

    if (in_array($socket,$read))
    {
        // new connection
        $connect = stream_socket_accept($socket,-1); // accept new connection
        $connects[] = $connect; // add to list
        unset($read[array_search($socket,$read)]);
    }

    foreach ($read as $connect)
    {
        // handle all connections
        $headers = [];
        while ($buffer = rtrim(fgets($connect)))
        {
            $headers[] = $buffer;
        }
        $response = implode("\n",$headers) . "\nCount: " . count($headers);
        echo "================== RESPONSE\n" . $response . "\n================== END RESPONSE\n";
        
        fwrite($connect,"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n" . $response);
        fclose($connect);
        unset($connects[array_search($connect,$connects)]);
    }
}

fclose($server);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)