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=方世玉";
注意使用这个的时候,不可在 curl_setopt ($ch, CURLOPT_HTTPHEADER , $header );
的$header里包含Cookie参数,否则会重叠,造成cookie不可预见的情况发生。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? 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的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <? 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 ; } |