浅谈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 REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
php生成短网址/短链接原理和用法实例分析
May 29 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中iconv函数使用方法
2008/05/24 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
Python微信库:itchat的用法详解
2017/08/14 Python
Python类的继承用法示例
2019/01/31 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
什么是接口(Interface)?
2013/02/01 面试题
生产主管岗位职责
2013/11/10 职场文书
结对共建协议书
2014/08/20 职场文书
个人作风建设自查报告
2014/10/22 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
胡桃夹子观后感
2015/06/11 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Django使用echarts进行可视化展示的实践
2021/06/10 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS