【发布时间】:2022-02-05 17:46:53
【问题描述】:
我正在尝试从 HTTP 获取请求字符串中获取 cookie 值。如何处理请求标头字符串并获取其中的 cookie 值?有什么方法可以使用或者有什么不同的解决方案来处理吗?
server.php
<?php
$host = "127.0.0.1";
$port = 20205;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket");
$result = socket_bind($sock, $host, $port) or die("Could not bind to socket");
$result = socket_listen($sock, 3) or die("Could not set up socket listener");
echo "Connection Established\n";
$agents = array();
do {
$accept = socket_accept($sock) or die("Could not accept incoming connection");
$header = socket_read($accept, 1024) or die("Could not read input");
var_dump($header);
perform_handshaking($header, $accept, $host, $port);
while (socket_recv($accept, $data, 1024, 0) >= 1) {
$data = unmask($data);
$data = json_decode($data);
$action = $data->action;
if (isset($data->action) && $action == 'connect') {
foreach ($agents as $key => $value) {
if ($key == $agentid && $value != $accept) {
socket_close($value);
$agents[$key] = $accept;
}
}
}
break; //exist this loop
}
} while (true);
这是我从 HTTP 获取请求中获取标头字符串的方式。
【问题讨论】:
-
你为什么使用
json_decode()? HTTP 协议不使用 JSON 格式。 -
需要解析headers,找到
Cookie:header。 -
你为什么要在 PHP 中实现 HTTP 服务器?
-
@Barmar 我正在使用 json_decode() 因为客户端接收到的消息格式设置为带有 javascript 的 JSON。
-
您的代码似乎假设整个标题将在单个
socket_read()中读取。这不是一个好的假设。
标签: php sockets cookies websocket http-headers