浅谈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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
BBS(php & mysql)完整版(七)
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
Smarty+QUICKFORM小小演示
Feb 25 PHP
PHP cron中的批处理
Sep 16 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
PHP设计模式之观察者模式定义与用法分析
Apr 04 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
php实现图片压缩处理
Sep 09 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
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php头像上传预览实例代码
2017/05/02 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
什么是规则表达式
2012/05/03 面试题
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
函授本科毕业自我鉴定
2013/10/09 职场文书
中专毕业生自荐信
2013/11/16 职场文书
高中军训感言400字
2014/02/24 职场文书
班主任寄语大全
2014/04/04 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers