带示例的PHP cURL教程

PHP编程语言标准库支持名为 libcurl . libcurl是cURL工具的一个库实现,用于使用流行的协议(如HTTP、FTP等)与服务器和客户机通信。cURL可用于HTTP POST、HTTP PUT、FTP Upload请求。

null

PHP cURL库

对于大多数Linux发行版,默认情况下通常不安装PHP cURL库。在Windows中,包括PHP cURL在内的所有库都随PHP一起安装。所以我们不需要为Windows操作系统安装额外的库。我们可以为基于deb的发行版安装PHP cURL库,如Ubuntu、Debian、Mint和Kali,如下所示。

$ sudo apt install php-curl
PHP cURL Library
PHP cURL库

PHP cURL使用步骤

为了在PHP中使用cURL,我们必须遵循以下初始化、配置、执行和关闭cURL会话所需的步骤。当然,我们将为这些函数提供一些参数和参数,以便设置cURL行为。

curl_init();      // initializes a cURL sessioncurl_setopt();    // changes the cURL session behavior with optionscurl_exec();      // executes the started cURL sessioncurl_close();     // closes the cURL session and deletes the variable made by curl_init();

初始化cURL会话

第一个是使用或创建PHP cURL会话是使用 curl_init() 用于初始化cURL会话的函数。curl_init()函数可以在没有参数的情况下调用,也可以使用URL参数来设置我们可以使用和通信的远程URL。

//Only create a cURL session and set to $ch variable$ch = curl_init();//Create a sessions variable named $ch //and initialize it for the "http://www.poftut.com" URL$ch = curl_init("http://www.poftut.com/");

设置卷曲选项

设置cURL选项不是强制性的,如果未设置任何选项,则将使用默认选项配置。为了设置cURL sessions选项,我们将提供已经初始化的cURL session变量和要设置的选项。有很多选择。我们可以通过执行 curl_setopt() 功能。

curl_setopt(SESSION_VARIABLE, OPTION, OPTION_VALUE);
  • `SESSIONu VARIABLE`是初始化为PHP cURL会话的变量。
  • `OPTION`是我们想要设置或更改的选项。
  • `OPTIONu VALUE`是指定选项的值。
$ch = curl_init();//Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/");//Set HTTP Header curl_setopt($ch, CURLOPT_HEADER, Array("Content-Type: text/xml"));//Return Page Contentscurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

执行cURL请求

第三步是执行cURL请求或与 curl_exec() 函数,其中我们将提供cURL session变量作为参数。

$ch = curl_init(); //Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/");//Execute curl with given optionscurl_exec($ch);

关闭cURL会话

PHP cURL请求的最后一步是关闭会话并释放资源。 curl_close() 用于关闭和释放所有资源,如内存、网络等。

//Initialize cURL session$ch = curl_init(); //Set URL as "http://www.poftut.com"curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/"); //Execute curl with given options curl_exec($ch);//Close the cURL sessioncurl_close($ch);

使用cURL获取URL

现在我们已经了解了PHP cURL的基本用法。我们将开始研究不同类型的例子。首先,我们将向google.com发出一个httpget请求,并将请求响应打印到标准输出或命令行。

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');curl_exec($ch);curl_close($ch);
Get URL with cURL
使用cURL获取URL

将页面内容返回到变量

或者,我们可以将cURL请求返回的响应放入一个变量中。我们将使用 CURLOPT_RETURNTRANSFER 选项,并将此选项值设置为1。

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$contents = curl_exec($ch);echo $contents;
Return Page Contents To A Variable
将页面内容返回到变量

设置用户代理HTTP头

我们还可以使用 CURLOPT_HEADER 选项与 "User-Agent: PofWeb" 价值观。在本例中,用户代理或浏览器名称表示为 PofWeb .

$ch = curl_init(); //Set URL as "http://www.poftut.com" curl_setopt($ch, CURLOPT_URL, "http://www.poftut.com/"); //Set HTTP Header curl_setopt($ch, CURLOPT_HEADER, Array("User-Agent: PofWeb")); //Return Page Contents curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//Close cURL sessioncurl_close($ch);

遵循重定向

重定向用于将用户从请求的URL重定向到另一个URL。如果当前URL不提供历史资源,则重定向非常有用。我们还可以使用 CURLOPT_FOLLOWLOCATION 选项与 true .

// Follow redirects, if anycurl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

如果响应为400、404,则返回Fail cURL

HTTP协议提供返回或HTTP状态代码以表示请求状态。像4XX、400、404这样的代码被用来表示关于请求处理的不同错误。如果当前的PHP cURL请求返回一个错误状态代码,我们可以使cURL失败并返回一些错误代码。我们将使用 CURLOPT_FAILONERROR 选项。

// Fail the cURL request if response code = 400 (like 404 errors) curl_setopt($curl, CURLOPT_FAILONERROR, true);

等待指定的连接时间

当连接到远程服务器时,可能会有一些延迟,这可能与internet速度、服务器速度等有关。我们可以设置一些超时,以防止无限期等待。我们将使用 CURLOPT_TIMEOUT 选项并提供超时秒数,在本例中为10。10秒后,连接请求将停止。

// Execute the cURL request for a maximum of 50 secondscurl_setopt($curl, CURLOPT_TIMEOUT, 10);

跳过SSL证书检查

今天的HTTP连接使用TCL/SSL证书是非常安全的。TLS/SSL证书用于加密连接,并由证书颁发机构批准供不同的方使用。PHP cURL的默认行为是在远程TLS/SSL证书无效时停止请求。即使远程HTTP服务器TLS/SSL证书无效,我们也可以防止这种情况并继续。我们就开始吧 CURLOPT_SSL_VERIFYHOST CURLOPT_SSL_VERIFYPEER 选项 false .

// Do not check the SSL certificatescurl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

相关文章: 如何更新Mozilla Firefox?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享