PHP中关于cURL的使用

cURL是利用URL语法在命令行方式下工作的开源文件传输工具。
PHP中关于cURL函数:

http://php.net/manual/zh/book.curl.php

1.基本实现步骤
序号函数说明
1curl_init()初始化一个curl对象,创建一个新cURL资源
2curl_setopt()设置URL和相应的选项
3curl_exec()执行相关事务并把结果传递给浏览器
4curl_close()关闭cURL资源,并且释放系统资源
/*远程获取百度网页数据: */
<?php
$curl = curl_init(); 				//初始curl化对象
curl_setopt($curl,CURLOPT_URL,'http://www.baidu.com');	//设置url
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);	//设置是否输出到页面
$output = curl_exec($curl);	//执行
//echo $output;
curl_close($curl);	//关闭curl资源
?>
2.使用curl_getinfo()函数获取输出信息
/*获取curl请求的输出信息*/
$output = curl_exec($curl);
$info = curl_getinfo($curl);
print_r($info['url']);//结果:http://www.baidu.com/
curl_getinfo返回的相关信息可查看:

http://php.net/manual/zh/function.curl-getinfo.php

3.使用curl发送GET请求

http_build_query — 该函数接受一个关联数组,返回由该关联数据描述的GET请求字符串
curl_setopt_array — 为cURL传输会话批量设置选项

$url = "www.xxx.com";
$data 	= array();
$data['name'] 	= 'delia';
$data['pwd'] 	= '123456';
$curl_options = array(
		CURLOPT_URL 	        => $url.'?'.http_build_query($data)
		,CURLOPT_HEADER         => FALSE
		,CURLOPT_RETURNTRANSFER => TRUE
		,CURLOPT_TIMEOUT        => 25
);
$curl = curl_init();
curl_setopt_array($curl, $curl_options);
curl_exec($curl);
4.使用curl发送POST请求

可以使用CURL提供的选项CURLOPT_POSTFIELDS
CURL_POST为true,表示这个请求是一个POST请求
POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可

$url = "www.xxx.com";
$post_data 	= array("name"=>"delia","pwd"=>"123456");
$curl_options  = array(
		CURLOPT_URL 	        => $url
		,CURLOPT_HEADER         => FALSE
		,CURLOPT_POST			=> TRUE
		,CURLOPT_RETURNTRANSFER => TRUE
		,CURLOPT_POSTFIELDS		=> $post_data
		,CURLOPT_TIMEOUT		=> 25
);
$curl = curl_init();
curl_setopt_array($curl, $curl_options);
$response = curl_exec($curl);

补充
以上方式获取到的数据为json格式,需使用json_decode函数解析成数组。

$response_array = json_decode($response,TRUE);

如果使用json_decode($response)解析的话,将会得到object类型的数据。

/*接受php页面远程服务器:*/

<?php
if(isset($_POST['name']))
{
    if(!empty($_POST['name']))
    {
	    echo 'hello,'.$_POST['name'].'!'; //hello,delia!
    }
}
?>
5.使用curl_errno()&&curl_error ()返回错误编号及信息

curl_errno()&&curl_error ()返回的相关信息可查看:
http://php.net/manual/zh/function.curl-errno.php

6. cURL模拟session登录
<?php
//************ cURL模拟session登录 ************

//************ 设置session 开始
$setUrl='http://localhost/curl-login/session.php?act=set';

//创建一个用于存放cookie信息的临时文件, //******注意这里
$cookiefile = tempnam("./tmp","cookies"); 

// 初始化一个curl对象
$curl = curl_init(); 

//设置要抓取的URL
curl_setopt($curl,CURLOPT_URL,$setUrl);

//设置curl参数:抓取的结果是保存到字符串中还是输出到屏幕上,
//1表示将结果不输出到屏幕上;0表示将结果输出到屏幕上
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);

// 是否将头文件的信息作为数据流输出
curl_setopt($curl,CURLOPT_HEADER,true);

// 包含cookie数据的文件名
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookiefile); 

// 连接结束后保存cookie信息的文件
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookiefile);

//执行curl,请求网页
$data = curl_exec($curl);

//echo $data;

//关闭url请求
curl_close($curl);
//************ 设置session 结束


//************ 获取session 开始
$getUrl='http://localhost/curl-login/session.php?act=get';

// 初始化一个curl对象
$curl = curl_init(); 

//设置要抓取的URL
curl_setopt($curl,CURLOPT_URL,$getUrl);

//设置curl参数:抓取的结果是保存到字符串中还是输出到屏幕上,
//1表示将结果不输出到屏幕上;0表示将结果输出到屏幕上
curl_setopt($curl,CURLOPT_RETURNTRANSFER,0);

// 是否将头文件的信息作为数据流输出
curl_setopt($curl,CURLOPT_HEADER,true);

// 包含cookie数据的文件名
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookiefile); 

//执行curl,请求网页
$data = curl_exec($curl);

//echo $data;

//关闭url请求
curl_close($curl);
//************ 获取session 结束
?>
7. cURL请求HTTPS含证书
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 重要!模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
curl_close($curl); // 关闭CURL会话
$tmpInfo=json_decode($tmpInfo,true);// 返回数据

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值