硬汉工作室

 找回密码
 立即注册

QQ登录

只需一步,快速开始

+
搜索
热搜: 活动 交友 discuz

[代码] php curl学习

[复制链接]
发表于 2024-6-24 17:11:20 | 显示全部楼层 |阅读模式
php里用curl多频繁就不用多说了,之前每次都是复制粘贴,对很多选项也是一知半解,今天记录下。
curl默认是get请求。


判断php是否启用了curl:
extension_loaded('curl'); // 如果php没有启用curl模块,那么则会返回false

下面是一个非常简单的例子

  1. $ch = curl_init(); // 创建一个curl资源
  2. url_setopt($ch, CURLOPT_URL, 'https://www.baidu.com'); // 设置访问的服务器,也可以设置在curl_init里
  3. curl_setopt($ch, CURLOPT_HEADER, 0); // 忽略头部信息,,否则会输出head信息,解析出错
  4. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // 链接服务器超时时间,单位s
  5. curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置整个curl执行的最大时间
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 是否直接输出结果,或者保存到变量,一般都设置为1,默认0
  7. curl_setopt($ch, CURLOPT_POST, 1); // 默认get方式,post请求需要单独设置
  8. curl_setopt($ch, CURLOPT_POSTFIELDS,['name' => 'nciaer']); // post 传数据,直接传数组
  9. $rs = curl_exec($ch); // 执行
  10. var_dump($rs); // 打印输出的结果
  11. curl_close($ch); // 关闭curl
复制代码
一个设置就需要写一个curl_setopt,很麻烦,可以使用curl_setopt_array($ch, ['配置项' => '值', ...])来设置多个


如果想要json格式传输数据呢?那得改成下面这样:
  1. $data = json_encode(['name' => 'nciaer']);
  2. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // json 传输
  3. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length:' . strlen($data))); // 设置header
复制代码

如果有证书问题,那么可以设置取消证书验证,一般都这么做,但是这么做似乎有啥安全问题:
  1. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  2.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
复制代码

如何通过curl上传文件呢?
  1. $data = [
  2.     'upload' => new CURLFile('data.txt') // data.txt就是上传的文件,upload类似于type=file里的name定义
  3. ];
  4. curl_setopt($ch, CURLOPT_POST, 1); // 默认get方式,post请求需要单独设置
  5. curl_setopt($ch, CURLOPT_POSTFIELDS,$data); // post 传数据,直接传数组
复制代码

如何通过curl下载文件呢?
  1. $fp = fopen ('1.gif', 'w+');
  2. curl_setopt($ch, CURLOPT_FILE, $fp);
  3. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随跳转
复制代码
虽然直接保存$rs也能下载文件,但是那种遇到大文件会非常吃内存,记住,curl_close之后要执行fclose($fp)

有关PHP系统、Discuz或网站等各种问题,可以联系QQ1069971363寻求付费支持
Discuz插件商店:http://addon.dismall.com/?@56030.developer
回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|硬汉工作室 ( 冀ICP备13021567号-9 )

GMT+8, 2025-2-5 16:51 , Processed in 0.043223 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表