浅谈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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
解析php类的注册与自动加载
Jul 05 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php制作文本式留言板
Mar 18 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 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 自定义错误处理函数trigger_error()
2013/03/26 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
php实现评论回复删除功能
2017/05/23 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
老司机带你解读jQuery插件开发流程
2016/05/16 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python3解释器知识点总结
2019/02/19 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
浅析python连接数据库的重要事项
2021/02/22 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
应征英语教师求职信
2013/11/27 职场文书
25岁生日感言
2014/01/13 职场文书
收费员岗位职责
2015/02/14 职场文书
实习生辞职信范文
2015/03/02 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python