我正试图通过使用curl
的超简单脚本发送cookie。以下是文件:
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_namecookie。curl
有什么问题?
您是否尝试过curl_getinfo($curl, CURLINFO_COOKIELIST)
而不是手动解析响应以获取cookie?
参见https://curl.haxx.se/docs/http-cookies.html