我已经保存了一个我想要引用和更新的cookie文件。我还希望通过CURLOPT_COOKIE
指定我自己的其他Cookie值,并将其保存到我现有的Cookie文件中。
但是,我无法让它发挥作用。
我的代码是:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $website); // Define target site
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_COOKIE, "fruit=apple;");
curl_setopt($ch, CURLOPT_COOKIEJAR, "usercookies/cookie_$user.txt"); // Tell cURL where to write cookies
curl_setopt($ch, CURLOPT_COOKIEFILE, "usercookies/cookie_$user.txt"); // Tell cURL which cookies to send
curl_setopt($ch, CURLOPT_TIMEOUT,15);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
$returnx = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
我保存的Cookie文件未反映我通过curl_setopt($ch, CURLOPT_COOKIE, "fruit=apple;");
所做的更改。保存的cookiefile应该显示“fruit = apple”,但它仍然显示旧值或cURL请求返回的值。
我是否需要引用整个域名才能保存?
cookie文件如下所示:
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.go.com TRUE / FALSE 1754020486 one AE4F4981
.go.com TRUE / FALSE 1468965260 two B9A1
答案 0 :(得分:2)
您使用CURLOPT_COOKIE
手动添加的Cookie不会在请求结束时保存到Cookie jar中。
唯一的情况是服务器为您发送的cookie发回Set-Cookie
标头以进行更新。
原因是因为cURL请求具有cookie结构,该cookie结构包含在请求结束时写入的cookie。数据只能通过以下方式获得此结构:a)首先从cookie文件中读取,或者在响应头中读取b)Set-Cookie
标头。
稍加注意,您可以使用以下内容将自己的cookie附加到该文件中:
$domain = '.go.com';
$expire = time() + 3600;
$name = 'fruit';
$value = 'apple';
file_put_contents($cookieJar, "\n$domain\tTRUE\t/\tFALSE\t$expire\t$name\t$value", FILE_APPEND);