【PHP】php curl怎么使用get和post方法
CrazyPanda发表于:2024-03-19 23:44:46浏览:309次
php curl使用post的方法:首先启动一个curl会话;然后对认证证书来源进行检查;接着从证书中检查ssl加密算法是否存在;最后以post方式请求https协议接口即可。
本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑
PHP:CURL分别以GET、POST方式请求HTTPS/http协议接口api
1. curl以GET方式请求https协议接口
function curl_get_https($url){ $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 $tmpInfo = curl_exec($curl); //返回api的json对象 //关闭URL请求 curl_close($curl); return $tmpInfo; //返回json对象 }
2. curl以POST
方式请求https协议接口
function curl_post_https($url,$data){ // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno'.curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $tmpInfo; // 返回数据,json格式 }
3. 封装的通用的接口
/** * CURL GET || post请求 * @desc: GET与post都通用 * @author: Sindsun * @email: 2361313833@qq.com * @date: 2019年4月24日上午10:54:31 * @param: $url 请求的地址 * $isPostRequest 默认true是GET请求,否则是POST请求 * $data array 请求的参数 * $certParam array ['cert_path'] ['key_path'] * @return: */ function curl_http($url, $isPostRequest=false, $data=[], $header=[], $certParam=[]){ // 模拟提交数据函数 $curlObj = curl_init(); // 启动一个CURL会话 //如果是POST请求 if( $isPostRequest ){ curl_setopt($curlObj, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curlObj, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的数据包 }else{ //get请求检查是否拼接了参数,如果没有,检查$data是否有参数,有参数就进行拼接操作 $getParamStr = ''; if(!empty($data) && is_array($data)){ $tmpArr = []; foreach ($data as $k=>$v){ $tmpArr[] = $k . '=' . $v; } $getParamStr = implode('&', $tmpArr); } //检查链接中是否有参数 $url .= strpos($url, '?') !== false ? '&' . $getParamStr : '?' . $getParamStr; } curl_setopt($curlObj, CURLOPT_URL, $url); // 要访问的地址 //检查链接是否https请求 if(strpos($url, 'https') !== false){ //设置证书 if( !empty($certParam) && isset($certParam['cert_path']) && isset($certParam['key_path']) ){ curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 //设置证书 //使用证书:cert 与 key 分别属于两个.pem文件 curl_setopt($curlObj, CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($curlObj, CURLOPT_SSLCERT, $certParam['cert_path']); curl_setopt($curlObj, CURLOPT_SSLKEYTYPE,'PEM'); curl_setopt($curlObj, CURLOPT_SSLKEY, $certParam['key_path']); }else{ curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 } } // 模拟用户使用的浏览器 if(isset($_SERVER['HTTP_USER_AGENT'])){ curl_setopt($curlObj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); } curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curlObj, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curlObj, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curlObj, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curlObj, CURLOPT_HTTPHEADER, $header); //设置头部 curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $result = curl_exec($curlObj); // 执行操作 if ( curl_errno($curlObj) ) { $result = 'error: '.curl_error($curlObj);//捕抓异常 } curl_close($curlObj); // 关闭CURL会话 return $result; // 返回数据,json格式 }
说明 :前提是打开php的curl开关和服务器的ssl_module,不然不能正常使用哦。
猜你喜欢
- 【PHP】PHP8如何通过Sanitize Filters来增强应用程序的安全性
- PHP是一门广泛应用于Web开发的脚本语言,而安全性一直是Web应用程序开发者需要关注的重要问题。PHP8提供了一种称为Sanitize Filters的机制,通过对用户输入进行过滤和清理,可以增强应用程序的安全性。本文将详细介绍PHP8中Sanitize Filters的使用方法,并提供一些具体的代码示例,帮助开发者更好地了解如何应用这一特性。首先,让我们来了解一下Sanitize Filters是什么。Sanitize Filters是一组用于过滤和清理用户输入数据的PHP函数,可以帮助开发
- 【PHP】SQL查询优化方法
- 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表
- 【PHP】了解PHP 8新特性Attributes注解
- PHP8 的 Alpha 版本,过几天就要发布了,其中包含了不少的新特性,当然我自己认为最重要的还是 JIT,这个我从 2013 年开始参与,中间挫折无数,失败无数后,终于要发布的东东。不过,今天呢,我不打算谈 JIT,等 PHP8 发布了以后,我再单独写个类似《深入理解 PHP8 之 JIT》系列来说吧。嘿嘿,今天呢,我想谈谈 Attributes,为啥呢, 是昨天我看到很多群在转发一个文章,叫做《理解 PHP8 中的 Attributes》,说实在的,这篇文章应该是直接从英文翻译过来的,写的
- 【PHP】php 对比2个数组是否一样
- 在 PHP 中,可以使用 array_diff 和 array_intersect 函数来比较两个数组是否相同。同时,还可以使用 == 或 === 运算符来比较两个数组是否相等。array_diff 函数array_diff 函数可以比较两个数组的差集,即找出在第一个数组中出现的元素,但是在第二个数组中不存在的元素。示例代码:$array1 = array(1, 2, 3); $array2 = array(1, 3
- 【PHP】PHP防止XSS攻击的主流方法
- 概述跨站点脚本 (XSS) 是一种严重的安全漏洞,允许恶意行为者将恶意脚本引入网站,使毫无戒心的访问者处于危险之中。使用 XSS,攻击者可以在受害者的 Web 浏览器中执行任意代码,可能导致敏感数据被盗、未经授权的访问或网站污损。本文旨在深入探讨 XSS 攻击的主要形式,阐明其根本原因,探索 XSS 利用的潜在后果,并深入了解防止 PHP 中 XSS 攻击的有效措施。介绍当恶意行为者成功将有害脚本插入受信任的网站时,就会发生跨站脚本 (XSS) 攻击。这些受感染的网站在不知不
- 【PHP】ES在MySQL、PHP中的使用
- ES简介一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。全文检索是指
- 【PHP】php哪些函数可以用来去幂方值
- php可以用来去幂方值的函数有pow函数、双星号、exp函数、sqrt函数和log函数等。详细介绍:1、pow函数用于计算x的y次幂,x是底数,y是指数;2、双星号是幂运算符,用于计算一个数的幂;3、exp函数用于计算以e为底的x次幂,e是自然对数的底数,x是指数;4、sqrt函数用于计算一个数的平方根,x是计算平方根的数;5、log函数用于计算以指定底数为底的对数。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP中,可以使用一些内置的函数来
- 【PHP】PHP常见漏洞的防范
- 一、常见PHP网站安全漏洞对于PHP的漏洞,目前常见的漏洞有五种。分别是Session文件漏洞、SQL注入漏洞、脚本命令执行漏洞、全局变量漏洞和文件漏洞。这里分别对这些漏洞进行简要的介绍。1、session文件漏洞Session攻击是黑客最常用到的攻击手段之一。当一个用户访问某一个网站时,为了免客户每进人一个页面都要输人账号和密码,PHP设置了Session和Cookie用于方便用户的使用和访向。2、SQL注入漏洞在进行网站开发的时候,程序员由于对用户输人数据缺乏全面判断或者过滤不严导致服务器执
栏目分类全部>