2014-05-19 70 views
1

我有一些cookie的麻烦。他们似乎没有按照他们应该的方式设置,而我一直无法弄清楚原因。该网址会加载网址详情,然后设置该Cookie,然后将其重定向回主网站。下面是我使用curl php设置饼干正确

$cookie_file_path = 'cookie-path.txt'; 

// open a site with cookies 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.stuller.com/s/user'); 
curl_setopt($ch, CURLOPT_HEADER ,1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // Cookie management. 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
$content = curl_exec($ch); 

// get cookies 
$cookies = array(); 
preg_match_all('/Set-Cookie:(?<cookie>\s{0,}.*)$/im', $content, $cookies); 

echo "<pre>"; 
print_r($cookies['cookie']); // show harvested cookies 
echo "</pre>"; 
exit; 

当我回声出饼干的PHP代码,这是我所看到的:

Array(
[0] => cart_session_id=365ad5b7-9ece-4255-aa68-3590d8841c17; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[1] => CartRefresh=5/19/2014 2:05:46 PM; expires=Tue, 20-May-2014 07:05:46 GMT; path=/ 
[2] => ASP.NET_SessionId=yyloxijj2mke1ozxwg203mxh; path=/; HttpOnly 
[3] => user_session_id=27c284ec-c5da-4c79-b860-f7bce9efac78; path=/ 
[4] => cms#51642=12719; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[5] => cms#51772=152; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[6] => cms#52083=13824; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[7] => cms#52113=32; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[8] => cms#52229=50; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
[9] => cms#52237=59; expires=Tue, 19-May-2015 19:05:46 GMT; path=/ 
} 

但在我的cookies文件,好像一切都是假的,并没有什么设置:

www.stuller.com FALSE / FALSE 1432062346 cart_session_id 365ad5b7-9ece-4255-aa68-3590d8841c17 
www.stuller.com FALSE / FALSE 1400569546 CartRefresh 5/19/2014 2:05:46 PM 
#HttpOnly_www.stuller.com FALSE / FALSE 0 ASP.NET_SessionId yyloxijj2mke1ozxwg203mxh 
www.stuller.com FALSE / FALSE 0 user_session_id 27c284ec-c5da-4c79-b860-f7bce9efac78 
www.stuller.com FALSE / FALSE 1432062346 cms#51642 12719 
www.stuller.com FALSE / FALSE 1432062346 cms#51772 152 
www.stuller.com FALSE / FALSE 1432062346 cms#52083 13824 
www.stuller.com FALSE / FALSE 1432062346 cms#52113 32 
www.stuller.com FALSE / FALSE 1432062346 cms#52229 50 
www.stuller.com FALSE / FALSE 1432062346 cms#52237 59 

我在做什么错,为什么他们不正确设置?另外,我怎样才能读取下一个curl方法的cookie,因为会有大约4或5个跳跃发生?

感谢

+0

你为什么认为它们设置不正确?文件中的所有cookie名称和值都与您从标题中提取的内容相匹配。 – Barmar

+1

正如我在你的其他问题http://stackoverflow.com/questions/23746403/cookies-php-curl-false?lq=1中解释的那样,'FALSE'列与cookie是否设置无关,它们是只是cookie的布尔属性。 – Barmar

+0

我想这就是让我困惑的原因。在标题中,他们不显示False/False,但在它的cookie文件中,它让我觉得cookie设置不正确。特别是当我尝试再次读取cookie以进行下一次curl时,我在服务器上收到错误消息。 – MrTechie

回答

1

当你想发送饼干,使用CURLOPT_COOKIEFILE选项。

当您想要收到 cookies并保存它们时,请使用CURLOPT_COOKIEJAR选项。

如果要发送先前保存的cookie,并且还要更新服务器所做的任何更改,请使用这两个选项。