浅谈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中$this->含义分析
Nov 29 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
php遍历CSV类实例
Apr 14 PHP
php利用事务处理转账问题
Apr 22 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 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 at(@)符号的用法简介
2009/07/11 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
网页常用特效代码整理
2006/06/23 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
Three.js基础学习教程
2017/11/16 Javascript
JsChart组件使用详解
2018/03/04 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
gearman的安装启动及python API使用实例
2014/07/08 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
苏州园林导游词
2015/02/03 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang