浅谈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实现多服务器共享SESSION数据的方法
Mar 16 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
有关php运算符的知识大全
Nov 03 PHP
Yii核心组件AssetManager原理分析
Dec 02 PHP
Laravel5中contracts详解
Mar 02 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
Mar 07 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 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
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python实现购物程序思路及代码
2017/07/24 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python简单实现控制电脑的方法
2018/01/22 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
公司业务员岗位职责
2014/03/18 职场文书
保护野生动物倡议书
2014/05/16 职场文书
亮剑观后感300字
2015/06/05 职场文书
运动会新闻报道稿
2015/07/22 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电