浅谈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读取30天之内的根据算法排序的代码
Apr 06 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
PHP删除指定目录中的所有目录及文件的方法
Feb 26 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
PHP new static 和 new self详解
Feb 19 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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 filter_var() 函数 Filter 函数
2012/04/25 PHP
php随机抽奖实例分析
2015/03/04 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
推荐11个实用Python库
2015/01/23 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
基于python实现百度翻译功能
2019/05/09 Python
Python内存管理实例分析
2019/07/10 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
打印机墨盒:123Inkjets
2017/02/16 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
后备干部考察材料
2014/02/12 职场文书
婚纱店策划方案
2014/05/22 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
初中英语教学反思范文
2016/02/15 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS