浅谈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可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
php记录日志的实现代码
Aug 08 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
php类自动加载器实现方法
Jul 28 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php设计模式之单例模式代码
Jun 11 PHP
php获得刚插入数据的id 的几种方法总结
May 31 PHP
PHP抽象类与接口的区别实例详解
May 09 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
深入解析php中的foreach问题
2013/06/30 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
新闻学专业应届生求职信
2013/11/08 职场文书
物业保安员岗位职责
2014/03/14 职场文书
销售团队激励口号
2014/06/06 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript