浅谈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 相关文章推荐
mysql 搜索之简单应用
Apr 27 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php中字符串和正则表达式详解
Oct 23 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
Laravel向公共模板赋值方法总结
Jun 25 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python实现按行分割文件
2019/07/22 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
仓库文员岗位职责
2014/04/06 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
财会专业大学生求职信
2014/09/26 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
python自动计算图像数据集的RGB均值
2021/06/18 Python
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技