浅谈PHP封装CURL


Posted in PHP onMarch 06, 2019

CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。

使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:
1.初始化连接句柄;
2.设置CURL选项;
3.执行并获取结果;
4.释放VURL连接句柄。

PHP.ini扩展开启

浅谈PHP封装CURL

//使用curl发送请求 第一个参数发送的url地址,第二个参数是否发送post请求,默认是发送get请求,第三个就是请求的参数,第四个参数是否发送https
 function curl_request($url, $post=false, $param=[], $https = false)
 {
 //curl_init 初始化的时候传递url
 $ch = curl_init($url);
 //curl_setopt 设置一些请求选项,当然get是默认的也是最好处理的
 if($post){
  //设置请求方式和请求参数,post请求,要设置的类型就是bool型的,那么我们肯定是启用的设置为true,POSTFILEDS是传递的参数,它的第三个参数就是传递的参数可以为一个数组类型的也就是我们的param
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
 }
 // https请求,默认会进行验证 
 if($https){
  //禁止从服务器端 验证客户端的证书,注意7.10开始默认为开启验证的!!!
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 }
 //curl_exec 执行请求会话(发送请求)
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $res = curl_exec($ch);
 //curl_close 关闭请求会话
 curl_close($ch);
 return $res;
 }

官网说明:

1、CURLOPT_POST
TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。

2、CURLOPT_POSTFIELDS
操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。文件类型可在文件名后以 ';type=mimetype' 的格式指定。这个参数可以是 urlencoded 后的字符串,类似'para1=val1¶2=val2&...',也可以使用一个以字段名为键值,字段数据为值的数组。如果value是一个数组,Content-Type头将会被设置成multipart/form-data。  从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value 必须是个数组。  从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。 

3、CURLOPT_SSL_VERIFYPEER
FALSE 禁止 cURL 验证对等证书(peer'scertificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录

以上所述是小编给大家介绍的PHP如何封装CURL详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php 中include()与require()的对比
Oct 09 PHP
PHP与SQL注入攻击[一]
Apr 17 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP数据过滤的方法
Oct 30 PHP
php中memcache 基本操作实例
May 17 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
php双层循环(九九乘法表)
Oct 23 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 #PHP
PHP实现的敏感词过滤方法示例
Mar 06 #PHP
详解PHP 二维数组排序保持键名不变
Mar 06 #PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 #PHP
php ajax confirm 删除实例详解
Mar 06 #PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 #PHP
一次因composer错误使用引发的问题与解决
Mar 06 #PHP
You might like
PHP生成便于打印的网页
2006/10/09 PHP
php广告加载类用法实例
2014/09/23 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
进一步理解Python中的函数编程
2015/04/13 Python
Python实现截屏的函数
2015/07/26 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python二元表达式用法
2019/12/04 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python 内存管理机制全面分析
2021/01/16 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
护理工作感言
2014/01/16 职场文书
节电标语大全
2014/06/23 职场文书
药店促销活动总结
2014/07/10 职场文书
公诉意见书范文
2015/06/05 职场文书
Python基础详解之邮件处理
2021/04/28 Python