浅谈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下MAIL的另一解决方案
Oct 09 PHP
PHP 危险函数全解析
Sep 09 PHP
PHP 中文处理技巧
Apr 25 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
如何在php中正确的使用json
Aug 06 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
PHP如何将XML转成数组
Apr 04 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP删除数组中特定元素的两种方法
Feb 28 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高级OOP技术演示
2009/08/27 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
PHP中cookie知识点学习
2018/05/06 PHP
动手学习无线电
2021/03/10 无线电
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
vue实现app页面切换动画效果实例
2017/05/23 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
python读取注册表中值的方法
2013/04/08 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
python 如何区分return和yield
2020/09/22 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
30年同学聚会感言
2014/01/30 职场文书
六查六看剖析材料
2014/02/15 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
委托公证书
2014/04/08 职场文书
事业单位考核材料
2014/05/21 职场文书
公司收款委托书范本
2014/09/20 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
代理词怎么写
2015/05/25 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
4种方法python批量修改替换列表中元素
2022/04/07 Python