迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

使用 PHP Curl 执行 HTTP 身份验证

作者:迹忆客 最近更新:2023/03/28 浏览次数:

本文介绍如何在 Ubuntu 中使用 PHP cURL 执行 HTTP 身份验证。


php-curl 简介

cURL(客户端 URL)是一个命令行实用程序,用于发送或接收数据和文件。 它使用 URL 语法,支持 FTPFTPSDICTHTTPHTTPS 等协议。

cURL 库在 PHP 中可用,称为 php-curl。 我们可以使用这个库通过在 PHP 中发送 HTTP 请求来与服务器通信。

我们可以执行各种任务,例如设置 cookie、使用代理、通过 SSL 连接传递数据,甚至使用 php-curl 进行身份验证。

让我们看看基本的 php-curl 函数。

  1. curl_init() - 它初始化一个 cURL 会话。
  2. curl_close() - 它关闭 cURL 会话。
  3. curl_setopt(handle, option, value) - 它为 cURL 会话设置选项。 这里,handle 是 curl_init() 返回的值。 option 参数可以有很宽的选项值。 您可以在此处找到选项列表。 它是根据需要使用的。 value 参数具有选项的值。
  4. curl_exec() - 它执行预定义的 cURL 会话。

在 Ubuntu 中安装 php-curl 库

在执行身份验证之前,我们必须验证我们的系统中是否安装了 php-curl。 我们可以使用以下命令来完成。

php -m

该命令列出已编译的 PHP 模块。 如果您可以在列表中找到 curl,则表示已安装 php-curl。

您还可以通过检查 phpinfo() 函数的输出来验证其安装。 如果已安装,curl 表将出现在输出中。

如果没有安装 php-curl,可以通过以下命令安装。

sudo apt-get install php-curl

安装后,打开 php.ini 文件并找到下面的行。

;extension=curl

取消注释上面的行,如下所示。

extension=curl

最后一步是使用这些命令中的任何一个重新启动服务器。

$ sudo systemctl start apache2
$ sudo /etc/init.d/apache2 start

从 HTML 表单执行基本 HTTP 身份验证

首先,我们将仅使用 HTTP POST 方法执行基本身份验证。 我们将创建一个接受用户名和密码的 HTML 登录表单。

我们将使用一组预定义的登录凭据检查用户输入。 接下来,我们将使用 cURL 方法执行 HTTP 身份验证。

例如,在 /var/www/html 中创建目录curl,然后创建文件login.php。 在 PHP 文件中,使用 HTML 创建登录表单。

将名称属性写为 uname 并传递给用户名和密码,如下例所示。

代码示例:

<form action="login.php" method="post">
  <input type="text" placeholder="Enter Username" name="uname" required><br>
  <input type="password" placeholder="Enter Password" name="pass" required><br>
  <button type="submit" >Login</button>
</form>

接下来,打开 PHP 标签并使用 isset() 函数检查用户名和密码是否等于 user123 和 password123。 使用 if 条件相应地显示消息,如下例所示。

if(isset($_POST['uname'])&& isset($_POST['pass']))
   if($_POST['uname']=='user123' && $_POST['pass']=='password123'){
       echo "login successful";
   }
   else{
       echo "login failed";
   }

现在,从服务器打开文件并按如下方式填写登录凭据。

username=user123
password=password123

输出结果如下:

Login form - html

 

您可以在 Inspect Element 选项的 Network 选项卡中检查 HTTP 请求,如下所示。

Inspect Element

我们可以通过向表单提交错误的凭据来测试身份验证,显示消息登录失败。 错误的凭据也可以从请求选项卡中看到,如上图所示。


使用 cURL 执行基本 HTTP 身份验证

我们可以使用上面列出的 cURL 方法执行 HTTP 身份验证。 首先,我们必须创建一个有效负载来将 HTTP 请求发送到服务器。

例如,在 curl 目录中创建一个文件 post.php。 在 PHP 文件中,创建一个数组 $data 并存储正确的登录凭据,如下所示。

$data = array(
    "uname" => "user123",
    "pass" => "password123",
    "form" => "submit"
);

接下来,创建一个变量 ch 来存储 cURL 会话。 将带有 URL http://localhost/curl/login.php 的函数 curl_init() 分配给 ch。

之后,使用 curl_setopt() 函数为 cURL 会话设置各种选项。 将 CURLOPT_FOLLOWLOCATION、CURLOPT_POST 和 CURLOPT_RETURNTRANSFER 设置为 TRUE。

CURLOPT_POSTFIELDS 选项提供负载 $data。 对于 CURLOPT_COOKIEJAR 选项,写入 cookie 文件名 cookie.txt。

我们必须创建一个空的 cookie.txt 文件以将 cookie 存储在项目目录中。

  1. http://localhost/curl/login.php 是我们使用 cURL 发送请求的目标 URL。
  2. 选项 CURLOPT_FOLLOWLOCATION 设置为 TRUE 跟随由 Location: header() 重定向的任何标头位置。
  3. 选项 CURLOPT_POST 设置为 TRUE 通知会话这是对服务器的 POST 请求。
  4. 选项 CURLOPT_POSTFIELDS 定义了请求中发送的负载。
  5. 在 cURL 会话关闭后,选项 CURLOPT_COOKIEJAR 将 cookie 保存到文件 cookie.txt 中。
  6. 选项 CURLOPT_RETURNTRANSFER 设置为 TRUE 返回 curl_exec() 的响应而不是直接输入。

最后编写以ch为参数的函数 curl_exec() 执行cURL会话,并用 curl_close() 关闭会话。 最后,显示 curl_exec() 函数的输出。

$ch = curl_init('http://localhost/curl/login.php');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);
curl_close($ch);
echo $result;

然后,运行 post.php 脚本。 由于有效负载中的凭据正确,因此收到以下输出。

Login form - curl

如果我们使用错误的凭据,输出将显示登录失败。

因此,本文演示了如何在 PHP 中执行基本的 cURL 身份验证。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便