curl的cookie怎麼使用?新手都很頭痛的,curl的參數太多了,其中cookie部分就涉及了4個。
當然了,手冊上明白寫的curl的cookie是3個,但是嘛,不是還有個header的參數嘛,裡面可以包含cookie.
curl非常的好用。最主要的是要熟悉curl_setopt的用法。
curl_setopt ($ch, CURLOPT_COOKIE , $cookie );
這裡的cookie值要用;分開的,而不是用&。也不需要用urlencode編碼,當然了,編碼了就更好。
$cookie = "a=b;c=d;name=方世玉";
$cookie = "a=b;c=d;name=方世玉";$cookie = "a=b;c=d;name=方世玉";
注意使用這個的時候,不可在curl_setopt ($ch, CURLOPT_HTTPHEADER , $header );
ookie的$header裡包含C未來的參數,否則會重疊,造成cookie不可預見的情況發生。
<? 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;
附上用來分析IE中cookie的程式碼
<? 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; }