php中Curl函数常用的两个例子

php中Curl函数常用的两个例子

例子, 模拟登陆
代码如下
/**

* 模拟登陆

* $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;

}

例子、soap

代码如下
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;

}