浅谈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中的日期处理方法集锦
Jan 02 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
yii分页组件用法实例分析
Dec 28 PHP
php实现三级级联下拉框
Apr 17 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
laravel 关联关系遍历数组的例子
Oct 10 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递归调用删除数组空值元素的方法
2015/04/28 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
PHP中串行化用法示例
2016/11/16 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
jquery.ui.draggable中文文档
2009/11/24 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
Python中的并发编程实例
2014/07/07 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python异常处理操作实例详解
2018/08/28 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
python和php哪个更适合写爬虫
2020/06/22 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
大学自荐信
2013/12/12 职场文书
产品销售员岗位职责
2013/12/18 职场文书
小学开学寄语
2014/01/19 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
办公室主任职责范本
2014/03/07 职场文书
网络编辑岗位职责
2014/03/18 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
五年级语文教学反思
2016/03/03 职场文书