How to use curl’s cookies? It’s a headache for novices. There are too many parameters in curl, of which the cookie part involves 4.
Of course, the manual clearly states that curl has 3 cookies, but there is also a header parameter, which can contain cookies.
curl is very easy to use. The most important thing is to be familiar with the usage of curl_setopt.
curl_setopt ($ch, CURLOPT_COOKIE , $cookie );
The cookie values here should be separated with; instead of &. There is no need to use urlencode encoding, of course, it would be better if encoded.
$cookie = "a=b;c=d;name=Fang Shiyu";
Please note that when using this, you cannot include Cookie parameters in the $header of curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
. Otherwise, they will overlap and cause unpredictable cookie behavior.
<? php $url = "http://www.test.com/zzzz.php"; $post_data = array ( "foo" =< "bar", "query" =< "Nettuts", "action" =< "Submit" ); $cookie_jar_index = 'f:/js/test/cookie.txt'; $cookie = "a=b;c=d;name=方世玉"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 我们在POST数据哦! curl_setopt($ch, CURLOPT_POST, 1); // 把post的变量加上 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_COOKIE, $cookie); $output = curl_exec($ch); curl_close($ch); echo $output;
Attached is the code used to analyze cookies in IE
<? php function join_cookie($cook) { foreach( $cook as $k=<$v ) { $d[] =$k."=".$v; } $data = implode(";",$d); return $data; } function pase_cookie($cookFile,$encode=true) { $cookie = file_get_contents ( $cookFile ); $citem = explode("*\n",$cookie); foreach( $citem as $c ) { list($ckey,$cvalue) = explode("\n",$c); if($ckey!='')$cook[$ckey] = $cvalue; } return $cook; }