首页 > 解决方案 > 使用 PHP curl 获取 cookie

问题描述

我正在尝试使用curl. 以下是文件:

get_cookie.php:

...
$curl = curl_init("http://.../set_cookie.php");

$data = array('fname'=>"John", 'lname'=>"Brown");
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
...
$response = curl_exec($curl);
...
// get cookies
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);
$cookies = array();

foreach($matches[1] as $item) {
    parse_str($item, $cookie);
    $cookies = array_merge($cookies, $cookie);
}

echo "cookies recived: <br>";
var_dump($cookies);

set_cookie.php:

...
if (isset($_POST["fname"])) {
    setcookie("usr_name", "user_".$_POST["fname"], time()+60*60);
    ...
}

但是在 curl 响应中我没有得到任何 cookie -$cookies数组是空的(我已经检查过 -$_POST["fname"]已设置 - POST 数据已成功发送)。当我set_cookie以标准方式调用它时 - 从浏览器中我得到所需的usr_name cookie。有什么问题curl

标签: phpcurlcookies

解决方案


您是否尝试过curl_getinfo($curl, CURLINFO_COOKIELIST)而不是手动解析响应来获取 cookie?

https://curl.haxx.se/docs/http-cookies.html


推荐阅读