侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php如何使用curl?(用法介绍)

php  /  管理员 发布于 7年前   188

php如何使用curl?下面本篇文章给大家总结一下php中的curl的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

一、curl简介

百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

php中使用最多的是通过curl来模拟get和post请求。

二、用法

(1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。

(2)、使用curl完成简单的请求主要分为四大步:

初始化,创建一个新的curl资源。

设置url和相应的选项

抓取url并把他传递给浏览器

关闭curl资源。把资源释放。

eg:

<?php// 创建一个新cURL资源$ch = curl_init();// 设置URL和相应的选项$options = array(CURLOPT_URL => 'http://www.example.com/',     CURLOPT_HEADER => false    );curl_setopt_array($ch, $options);// 抓取URL并把它传递给浏览器curl_exec($ch);// 关闭cURL资源,并且释放系统资源curl_close($ch);?>

三、curl函数

  • curl_close — 关闭一个cURL会话

  • curl_copy_handle — 复制一个cURL句柄和它的所有选项

  • curl_errno — 返回最后一次的错误号

  • curl_error — 返回一个保护当前会话最近一次错误的字符串

  • curl_escape — 使用 URL 编码给定的字符串

  • curl_exec — 执行一个cURL会话

  • curl_file_create — 创建一个 CURLFile 对象

  • curl_getinfo — 获取一个cURL连接资源句柄的信息

  • curl_init — 初始化一个cURL会话

  • curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄

  • curl_multi_close — 关闭一组cURL句柄

  • curl_multi_exec — 运行当前 cURL 句柄的子连接

  • curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流

  • curl_multi_info_read — 获取当前解析的cURL的相关传输信息

  • curl_multi_init — 返回一个新cURL批处理句柄

  • curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源

  • curl_multi_select — 等待所有cURL批处理中的活动连接

  • curl_multi_setopt — 为 cURL 并行处理设置一个选项

  • curl_multi_strerror — Return string describing error code

  • curl_pause — Pause and unpause a connection

  • curl_reset — 重置一个 libcurl 会话句柄的所有的选项

  • curl_setopt_array — 为cURL传输会话批量设置选项

  • curl_setopt — 设置一个cURL传输选项

  • curl_share_close — Close a cURL share handle

  • curl_share_init — Initialize a cURL share handle

  • curl_share_setopt — Set an option for a cURL share handle.

  • curl_strerror — Return string describing the given error code

  • curl_unescape — 解码给定的 URL 编码的字符串

  • curl_version — 获取cURL版本信息

四、实例

1、使用curl,get获得数据

<?php$url = 'http://www.example.com';//初始化一个 cURL 对象 $ch  = curl_init();//设置你需要抓取的URLcurl_setopt($ch, CURLOPT_URL, $url);// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//是否获得跳转后的页面curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);$data = curl_exec($ch);curl_close($ch);echo $data;?>

2、使用curl,post获得数据

<?phpfunction curl_post($url, $arr_data){   $post_data = http_build_query($url_data);   $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch,  CURLOPT_POSTFLELDS, $post_data);    $data = curl_exec($ch);    curl_close($ch);    echo $data;}$arr_post = array(    'name'=>'test_name',    'age'   => 1);curl_post("http://www.explame.com/", $arr_post);?>

3、使用代理抓取页面

为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "http://google.com"); curl_setopt($ch, CURLOPT_HEADER, false);  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//是否通过http代理来传输curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080);  //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密码的话,加上这个  $result=curl_exec($ch); curl_close($ch);?>

4、继续保持本站session的调用

在实现用户同步登录的情况下需要共享session,如果要继续保持本站的session,那么要把sessionid放到http请求中

<?php$session_str = session_name().'='.session_id().'; path=/; domain=.explame.com';session_write_close(); //将数据写入文件并且结束session$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_COOKIE, $session_str); $ret = curl_exec($ch);curl_close($ch);?>

end

本文转载自:https://blog.csdn.net/longgeaisisi/article/details/89330576

推荐学习:PHP视频教程

以上就是php如何使用curl?(用法介绍)的详细内容,更多请关注其它相关文章!


  • 上一条:
    PHP7在开发机上的安装使用之旅
    下一条:
    关于PHP 7.4.5的错误修复
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客