php中Curl函数常用的两个例子(登陆/soap)

curl的cookie怎么使用?新手都很头疼的,curl的参数太多了,其中cookie部分就涉及了4个。

例子, 模拟登陆

当然了,手册上明白写的curl的cookie是3个,但是嘛,不是还有个header的参数嘛,里面可以包含cookie.

 代码如下

curl非常的好用。最主要的是要熟悉curl_setopt的用法。

/**
* 模拟登陆
* $url 请求地址
* $post 需要POST的数据
* $cookie 登陆时取的的COOKIE
* $cookiejar cookie要存到的位置 例如/tmp/test.cookie
* $referer 上页地址
*
**/
function vcurl($url, $post = ”, $cookie = ”, $cookiejar = ”, $referer
= ”){
$tmpInfo = ”;
//用来存放cookie的文件
//初始化curl
$curl = curl_init();
//设定目标网址
curl_setopt($curl,
CURLOPT_URL, $url);
//使用目前所用的浏览器代理
curl_setopt($curl, CURLOPT_USERAGENT,
$_SERVER[‘HTTP_USER_AGENT’]);
//curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.0)”);
//如果有Ref参数,则设置Referer头,否则自动设置Referer头
if($referer) {
curl_setopt($curl, CURLOPT_REFERER, $referer);
} else {
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
}
//如果有post数据参数,则方法为POST,并且设置数据,否则为GET
if($post) {
//发送一个常规的POST请求,默认类型为:application/x-www-form-urlencoded,www.111cn.net表单提交
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
}
//如果有cookie参数,则设置
if($cookie) {
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
}
//如果有cookie文件参数,则设置存取Cookie文件名
if($cookiejar) {
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar);
}
//如果是302转移,则返回转移后的网址及内容
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//设置执行的最大秒数
curl_setopt($curl, CURLOPT_TIMEOUT, 100);
//返回内容中是否包含头信息
curl_setopt($curl, CURLOPT_HEADER, 0);
//把返回的结果存在文件或者变量中,而不是直接显示在浏览器
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行函数后的返回结果
$tmpInfo = curl_exec($curl);
//如果出错,显示错误信息
if (curl_errno($curl)) {
$tmpInfo = ‘<pre><b>错误:</b><br
/>’.curl_error($curl);
}
//关闭curl对象
curl_close($curl);
//返回结果
return $tmpInfo;
}

curl_setopt ($ch, CURLOPT_COOKIE , $cookie );

例子、soap

这里的cookie值要用;分开的,而不是用&。也不需要用urlencode编码,当然了,编码了就更好。

 

$cookie = "a=b;c=d;name=方世玉";

 代码如下

注意使用这个的时候,不可在 curl_setopt ($ch, CURLOPT_HTTPHEADER ,
$header );

function vcurlsoap($url, $SoapRequest,
$SoapAction) {
$ch = curl_init (); //initiate the curl session
curl_setopt ( $ch, CURLOPT_URL, $url ); //set to url to post to
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return data in a
variable
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $SoapRequest ); // post the
xml
curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 ); // set timeout in seconds
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
$header = array (“Content-Type: text/xml” );
$header [] = “Content-Length: “.strlen($SoapRequest);
if (! is_null ( $SoapAction ))
$header [] = ‘SOAPAction: “‘ . $SoapAction . ‘”‘;
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
$xmlResponse = curl_exec ( $ch );
curl_close ( $ch );
return $xmlResponse;
}

的$header里包含Cookie参数,否则会重叠,造成cookie不可预见的情况发生。

附上用来分析IE中cookie的代码以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注