文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用 PHP Curl 执行 HTTP 身份验证

2024-02-27 20:44

关注

本文介绍如何在 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 身份验证。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯