Я хочу получить значение sid из двух последних заголовков set-cookie после публикации запроса.

sid=20076232_f83094c0b2cd89e6e2ee92cdc23eb36c; это то, что мне нужно.

function SendRequest($url, $method, $data, $headers) {
$context = stream_context_create(array
(
    'http' => array(
        'method' => $method,
        'header' => $headers,
        //'content' => http_build_query($data)
        'content' => $data
    )
));

$response_body = file_get_contents($url, false, $context);
//var_dump($http_response_header);
return array(
    'headers' => $http_response_header, 
    'body' => $response_body
); 

}

Функция get_headers() возвращает массив, но не работает для доступа к нему по номеру индекса. иногда это случайно

Заголовки ответа выглядят так

HostName: *.*.2.111
Set-Cookie: nickname=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/;

Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/;

Set-Cookie: nickname=%25E4%25B8%2580%25E8%2591%2589%25E9%2580%2599%25E5%25A4%25A9; expires=Mon, 22-Oct-2018 13:44:14 GMT; Max-Age=2592000; path=/

Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/

Set-Cookie: sid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; 

Set-Cookie: nickname=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; 

Set-Cookie: nickname=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/

Set-Cookie: sid=20076232_f83094c0b2cd89e6e2ee92cdc23eb36c; expires=Mon, 22-Oct-2018 13:44:14 GMT; Max-Age=2592000; path=/
Transfer-Encoding: chunked
X-Powered-By: PHP/5.5.38-pl0-gentoo
-1
Wika 22 Сен 2018 в 16:40

1 ответ

Лучший ответ

Вы можете просто отфильтровать вывод get_headers, используя preg_grep:

#                        ↓↓ hex ↓↓
$sids = preg_grep("/sid=([\d_a-f]+);/", $headers);

Затем используйте preg_match, чтобы извлечь последний действительный идентификатор. Или просто сложите заголовки в один текстовый блок и извлеките первое совпадение (видя, что есть только одно).

0
mario 22 Сен 2018 в 14:09