目录
钥匙要点
的URL
curlopt_url - 文件的URL,请注意使用“ ftp://”而不是“ http://”
发送多个请求
>故障排除
结论
curl是什么,为什么它在php?
curl或客户端URL中使用,是一个允许您在PHP中提出HTTP请求的库。它用于与不同类型的服务器进行通信并下载或上传数据。 Curl支持HTTP,HTTP,FTP等各种协议。这是一个强大的工具,可用于与API进行交互,刮擦网页甚至下载文件。
>
>如何使用curl?
>您可以使用curlopt_httpheader选项。此选项将标题数组作为其值。以下是一个示例:
要遵循重定向,您需要将curlopt_followlocation选项设置为true。您可以做到这一点:
>我如何从curl请求中获取响应标头?响应标头,您可以将curlopt_header选项设置为true。这将包括输出中的标题。这是一个示例:
首页 后端开发 php教程 PHP主|使用卷曲来远程请求

PHP主|使用卷曲来远程请求

Feb 23, 2025 am 10:14 AM

PHP Master | Using cURL for Remote Requests

PHP主|使用卷曲来远程请求

如果您是Linux用户,那么您可能已经使用了卷发。这是一个强大的工具,用于从发送电子邮件到下载最新的《我的小马匹》字幕。在本文中,我将解释如何在PHP中使用卷曲扩展。该扩展名为我们提供了PHP舒适世界中的主机实用程序的功能。我将讨论发送和发布请求,处理登录cookie和FTP功能。 在开始之前,请确保您安装了扩展名(和libcurl库)。默认情况下不安装它。在大多数情况下,可以使用系统的软件包管理器安装它,但是除非您可以在PHP手册中找到说明。

钥匙要点

  • curl是一种功能强大的工具,用于从发送电子邮件到下载字幕的各种任务,可以通过提供与控制台实用程序相同的功能的扩展。
  • curl可用于检索网页,登录网站,使用FTP并发送多个请求。例如,您可以通过发送带有特定详细信息的发布请求来模拟登录到WordPress驱动的网站。
  • 使用两个函数简化了
  • 故障排除卷曲请求:curl_getinfo()和curl_error()。这些功能提供了有关频道以及请求期间可能发生的任何错误的详细信息。
  • 卷曲是一种进行远程调用的高效且强大的工具,使其非常适合访问外部API或爬行等任务。它提供了一个用户友好的界面和请求相对容易执行。
  • >
  • 如何工作?
> 所有卷曲请求遵循相同的基本模式:

首先,我们通过调用curl_init()函数来初始化卷曲资源(通常为“ curl hander”> ch> ch
    )。
  1. 接下来,我们将设置各种选项,例如URL,请求方法,有效负载数据等。可以使用Curl_setopt()单独设置选项,或者我们可以将选项数组传递到Curl_setopt_array()。 然后,我们通过调用curl_exec()。>执行请求
  2. 最后,我们释放了资源以清除内存。
  3. >
  4. 因此,用于提出请求的样板代码看起来像这样:
  5. 为请求而更改的唯一一件事是设置了哪些选项,哪些选项当然取决于您对卷发的工作。
  6. 检索网页
  7. 我能想到的最基本的示例是仅获取网页的内容。因此,让我们以BBC的主页为例。
  8. 检查浏览器中的输出,您应该看到显示的BBC网站。我们很幸运,因为该站点的显示正确,因为它的绝对链接到样式表和图像。 我们刚刚使用的选项是:
<span><span><?php
</span></span><span><span>// init the resource
</span></span><span><span>$ch = curl_init();
</span></span><span>
</span><span><span>// set a single option...
</span></span><span><span>curl_setopt($ch, OPTION, $value);
</span></span><span><span>// ... or an array of options
</span></span><span><span>curl_setopt_array($ch, array(
</span></span><span><span>OPTION1 => $value1,
</span></span><span><span>OPTION2 => $value2
</span></span><span><span>));
</span></span><span>
</span><span><span>// execute
</span></span><span><span>$output = curl_exec($ch);
</span></span><span>
</span><span><span>// free
</span></span><span><span>curl_close($ch);</span></span>
登录后复制
登录后复制
登录后复制
登录后复制
curlopt_url - 指定请求

的URL

  • > curlopt_returntransfer - 设置false时,curl_exec()根据请求的成功返回true或false。设置为true时,curl_exec()返回响应的内容。
  • >登录到网站

    卷发执行了检索BBC页面的GET请求,但是Curl也可以使用其他方法,例如POST和PUT。在此示例中,让我们模拟登录以WordPress为动力的网站。登录是通过将POST请求发送到>的登录名来完成: 登录 - 用户名
      >
    • > PWD - 密码
    • redirect_to - 登录
    • >之后我们要转到的URL
    • > TestCookie - 应将其设置为1(仅适用于WordPress) 当然,这些参数对每个站点都有特定。您应该始终自己检查输入名称,这可以通过查看浏览器中的HTML页面的来源很容易完成。
    • 新选项是:
    > curlopt_post - 如果要发送邮政请求
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    ,请设置此true
      > curlopt_postfields - 将在请求正文中发送的数据
    • >
    • curlopt_followlocation - 如果设置为true,则curl将遵循重定向
    • 哦!但是,如果您测试上述内容,则会看到一个错误消息:“错误:cookie被浏览器阻止或不支持。您必须允许cookie使用WordPress。”这是正常的,因为我们需要启用cookie才能工作。我们通过添加两个选项来做到这一点。
    • 新选项是:
    > curlopt_cookiesession-如果设置为true,curl将启动新的cookie会话,而忽略任何以前
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    登录后复制
    > curlopt_cookiejar - 这是文件的名称,其中curl应保存cookie信息。确保您有正确写入文件的权限!
      >
    • 现在我们已登录,我们只需要引用cookie文件以获取后续请求。
    • 与FTP
    • 一起工作 使用Curl通过FTP下载和上传文件也很容易。让我们看下载文件:
    • 请注意,出于安全原因,没有太多允许匿名上传和下载的公共FTP服务器,因此上面的URL和凭据只是位置持有人。 这与发送HTTP请求几乎相同,但只有几个较小的差异:

    curlopt_url - 文件的URL,请注意使用“ ftp://”而不是“ http://”

    <span><span><?php
    </span></span><span><span>$postData = array(
    </span></span><span><span>'login' => 'acogneau',
    </span></span><span><span>'pwd' => 'secretpassword',
    </span></span><span><span>'redirect_to' => 'http://example.com',
    </span></span><span><span>'testcookie' => '1'
    </span></span><span><span>);
    </span></span><span>
    </span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    curlot_userpwd - FTP服务器的登录凭据
    • 通过FTP上载文件的复杂稍复杂,但仍然可以管理。看起来像这样:
    • 这里的重要选择是:
    • > curlopt_upload - 显而易见的布尔
    <span><span><?php
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://example.com/wp-login.php',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true,
    </span></span><span><span>CURLOPT_POST => true,
    </span></span><span><span>CURLOPT_POSTFIELDS => $postData,
    </span></span><span><span>CURLOPT_FOLLOWLOCATION => true,
    </span></span><span><span>CURLOPT_COOKIESESSION => true,
    </span></span><span><span>CUROPT_COOKIEJAR => 'cookie.txt'
    </span></span><span><span>));</span></span>
    登录后复制
    > curlopt_infile - 我们想要上传的文件的可读流
      > curlopt_infilesize - 我们要在字节中上传的文件大小

    发送多个请求

    想象一下,我们必须执行五个请求才能检索所有必要的数据。请记住,某些事情将无法控制,例如网络延迟和目标服务器的响应速度。那么,很明显的是,连续五次通话时的任何延误确实可以加起来!缓解此问题的一种方法是异步发出请求。 异步技术在JavaScript和Node.js社区中更为常见,但短暂地,我们不再等待耗时的任务完成,而是将任务分配给其他线程或过程,并在此期间继续做其他事情。任务完成后,我们回来以取得结果。重要的是,我们没有浪费时间等待结果;我们花了它独立执行其他代码。 执行多种异步卷曲请求的方法与以前有所不同。我们从相同的开始 - 我们启动每个频道然后设置选项 - 但是我们使用curl_multi_init()启动多手汉,并使用curl_multi_add_handle()添加我们的频道。我们通过循环并检查其状态来执行处理程序。最后,我们获得了curl_multi_getContent()的响应内容。
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    上述代码花费了大约1,100毫秒来在我的笔记本电脑上执行。依次执行请求,而无需大约2,000毫秒的多接口。想象一下,如果您发送数百个请求,您的收益将是多少! 存在多个项目,可以抽象并包装多接口。讨论它们超出了文章的范围,但是如果您打算异步发出多个请求,那么我建议您看看它们:
    • github.com/petewarden/parallelcurl
    • > semlabs.co.uk/journal/Object-Eriended-curl-class-curl-class-with-multi-threading

    >故障排除

    如果您使用的是卷曲,那么您可能正在向第三方服务器执行请求。您无法控制它们,并且可能会出错:服务器可以离线,目录结构可以改变等。我们需要一种有效的方法来找出某些事物不起作用时出了什么问题,幸运的是,Curl为此提供了两个功能: curl_getinfo()和curl_error() 。 curl_getinfo()返回一个数组,其中包含有关频道的所有信息,因此,如果要检查一切是否正确,则可以使用:
    <span><span><?php
    </span></span><span><span>// init the resource
    </span></span><span><span>$ch = curl_init();
    </span></span><span>
    </span><span><span>// set a single option...
    </span></span><span><span>curl_setopt($ch, OPTION, $value);
    </span></span><span><span>// ... or an array of options
    </span></span><span><span>curl_setopt_array($ch, array(
    </span></span><span><span>OPTION1 => $value1,
    </span></span><span><span>OPTION2 => $value2
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>// execute
    </span></span><span><span>$output = curl_exec($ch);
    </span></span><span>
    </span><span><span>// free
    </span></span><span><span>curl_close($ch);</span></span>
    登录后复制
    登录后复制
    登录后复制
    登录后复制
    如果弹出错误,您可以使用curl_error()检查出来:
    <span><span><?php
    </span></span><span><span>curl_setopt_array(
    </span></span><span><span>$ch, array(
    </span></span><span><span>CURLOPT_URL => 'http://www.bbc.co.uk/',
    </span></span><span><span>CURLOPT_RETURNTRANSFER => true
    </span></span><span><span>));
    </span></span><span>
    </span><span><span>$output = curl_exec($ch);
    </span></span><span><span>echo $output;</span></span>
    登录后复制
    登录后复制

    结论

    Curl提供了一种强大而有效的方式来拨打远程通话,因此,如果您需要爬网或访问外部API的东西,则curl是工作的绝佳工具。它为我们提供了一个不错的接口和相对简单的执行请求的方法。有关更多信息,请访问PHP手册和Curl网站。下次见! >对本文的评论已关闭。对PHP有疑问吗?为什么不在我们的论坛上询问? 通过fotolia 图像 >常见问题(常见问题解答)有关将卷曲用于远程请求的问题

    curl是什么,为什么它在php?

    curl或客户端URL中使用,是一个允许您在PHP中提出HTTP请求的库。它用于与不同类型的服务器进行通信并下载或上传数据。 Curl支持HTTP,HTTP,FTP等各种协议。这是一个强大的工具,可用于与API进行交互,刮擦网页甚至下载文件。

    >我如何安装和启用php?

    curl通常包含在大多数中Web服务器。但是,如果不启用它,则可以通过修改php.ini文件来做到这一点。找到“; Extension = Curl”的线,然后卸下分号。如果该行不存在,则可以在文件末尾添加。更改后,保存文件并重新启动您的Web服务器。

    >如何在PHP中简单卷曲请求? curl_init()函数。然后,使用curl_setopt()函数设置您的选项。最后,使用curl_exec()执行请求,然后用curl_close()关闭会话。这是一个基本示例:

    $ ch = curl_init();

    curl_setopt($ ch,curlopt_url,“ http://example.com”);
    curl_setopt( );
    $ output = curl_exec($ ch);
    curl_close($ ch);

    >
    >如何处理curl中的错误?

    >

    >

    >
    >您可以通过使用curl_errno()和curl_error()和curl_error()和curl_error( )功能。这些函数分别返回最后一个错误编号和错误消息。以下是一个示例:

    if(curl_errno($ ch)){ echo'错误:'。 curl_error($ ch);
    }

    >如何使用curl?

    发送发布请求,以发送邮政请求,您需要将curlopt_post选项设置为true,然后将curlopt_postfields选项设置为要发送的一系列数据。以下是一个示例:

    curl_setopt($ ch,curlopt_post,1);
    curl_setopt($ ch,curlopt_postfields,“ postVar1 = value1&postvar2 = value2 = value2”)卷曲请求的标题?

    >您可以使用curlopt_httpheader选项。此选项将标题数组作为其值。以下是一个示例:

    $ headers = array(
    'content-type:application/json',
    '授权:bearer'。$ token
    );
    curl_setopt($ curl_setopt($ CH,curlopt_httpheader,$ headers);

    >我如何跟随卷曲重定向?

    >

    要遵循重定向,您需要将curlopt_followlocation选项设置为true。您可以做到这一点:


    curl_setopt($ ch,curlopt_followlocation,true);

    >我如何从curl请求中获取响应标头?响应标头,您可以将curlopt_header选项设置为true。这将包括输出中的标题。这是一个示例:

    curl_setopt($ ch,curlopt_header,true);

    如何使用curl?

    发送文件,您可以使用文件,您可以使用该文件curlopt_postfields选项,并将文件路径带有 @符号。以下是一个示例:

    curl_setopt($ ch,curlopt_postfields,array('file'=>'@/path/path/to/file.txt'));


    代理?

    用于将卷曲与代理使用,您可以将curlopt_proxy选项设置为代理的地址。您可以做到这一点:

    curl_setopt($ ch,curlopt_proxy,“ http://proxy.example.com:8080”);

    >

    以上是PHP主|使用卷曲来远程请求的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热门文章

    <🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
    4 周前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系统,解释
    4 周前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆树的耳语 - 如何解锁抓钩
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    热门话题

    Java教程
    1672
    14
    CakePHP 教程
    1428
    52
    Laravel 教程
    1332
    25
    PHP教程
    1276
    29
    C# 教程
    1256
    24
    说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

    在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

    PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? Apr 17, 2025 am 12:25 AM

    PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

    PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

    PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

    您如何防止PHP中的SQL注入? (准备的陈述,PDO) 您如何防止PHP中的SQL注入? (准备的陈述,PDO) Apr 15, 2025 am 12:15 AM

    在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

    PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

    PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

    PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

    PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

    PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

    PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

    在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

    PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

    See all articles