我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP 身份验证

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP 身份验证

HTTP 身份验证向客户端发送特殊的 HTTP 标头,并要求提供身份验证代码以访问该页面。

它是一种 PHP 内置方法,用于验证用户是否执行特定任务。PHP 有两种 HTTP 身份验证方法,BasicDigest

HTTP 身份验证将生成一个弹出窗口来询问身份验证信息。

它使用数组 $_SERVER 变量、PHP_AUTH_USERPHP_AUTH_PW 对用户进行身份验证,并使用 AUTH_TYPE 设置身份验证类型。


在 PHP 中使用基本 HTTP 身份验证对用户进行身份验证

基本 HTTP 身份验证使用非加密 PHP base64 编码;这就是为什么它应该只在提供 HTTPS 等安全性时使用。

这些证券称为传输层证券。


<?php

if( ( isset($_SERVER['PHP_AUTH_USER'] ) && ( $_SERVER['PHP_AUTH_USER'] == "admin" ) ) AND ( isset($_SERVER['PHP_AUTH_PW'] ) && ( $_SERVER['PHP_AUTH_PW'] == "password" )) )

{

    echo(" Hello ".$_SERVER['PHP_AUTH_USER']."! <br>\n");

}
else
{
    // These headers will cause the browser to ask for authentication information
    header('WWW-Authenticate: Basic realm="This page is only authorized to registered users"');
    header('HTTP/1.0 401 Unauthorized');

    //This text will be shown after several failed attempts, or you cancel the pop-up box.
    echo"Protected by HTTP Authentication <br>";
	echo "Use <b>admin</b> for the username, and <b>password</b> for the password to enter";
    }
?>

此代码将生成一个弹出框并询问用户名和密码。

如果输入正确的信息,你将可以访问页面,如果输入错误,代码将重定向几次,最后打印失败消息。

用户名是 admin,密码是 password

输出:

PHP 函数警告消息


If the information is correct:
"Hello admin!" 
If the information is failed:
"Protected by HTTP Authentication"
"Use admin for the username, and password for the password to enter."

在 PHP 中使用 Digest HTTP 身份验证对用户进行身份验证

摘要认证通过对信息使用散列函数来使用加密。

此信息包括用户信息、HTTP 方法、服务器提供的 nonce 值和请求的 URL;它比基本 HTTP 身份验证更安全,因为信息是加密的。


// User authentication info
$auth_info = array('user1' => 'pass1', 'user2' => 'pass2');

// First of all check PHP_AUTH_DIGEST variable, if it is empty the header will redirect the page to pop up box.
if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
    header('WWW-Authenticate: Digest realm="Restricted area",qop="auth",nonce="'.uniqid().'",opaque="'.md5("Restricted area"));
    header('HTTP/1.1 401 Unauthorized');

    exit('You cancelled the authentication');
}

// it is required to check the Digest Authentication Variable first before converting the information to md5

if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) || !isset($auth_info[$data['username']])){
    exit('The authentication information entered is not correct!');
}

// generating the valid authentication response using the client info and server request method

$auth_hash1 = md5($data['username'] . ':Restricted area:' . $auth_info[$data['username']]);
$auth_hash2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
$auth_response = md5($auth_hash1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$auth_hash2);

if ($data['response'] != $auth_response){
    exit('The authentication information entered is not correct!');
}
else{
// if authentication response matches the info 
    echo 'Welcome ' . $data['username'].' you are an authenticated user';
}

// The function below is from the official PHP manual, https://www.php.net/manual/en/features.http-auth.php. It is used to parse the HTTP digest.
function http_digest_parse($txt)
{
    
    $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
    $data = array();
    $keys = implode('|', array_keys($needed_parts));

    preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);

    foreach ($matches as $m) {
        $data[$m[1]] = $m[3] ? $m[3] : $m[4];
        unset($needed_parts[$m[1]]);
    }

    return $needed_parts ? false : $data;
}

上面的代码显示了应用摘要 HTTP 身份验证方法的过程。你可以使用 PHP 手册中的 http_digest_parse() 函数并使用它来解析 HTTP Digest 身份验证。

输出将与基本类似,但更安全。有两个用户,user1user2

有两个密码,分别是 pass1pass2。你可以输入任何信息并登录。

输出:

PHP 函数警告消息


If the information is correct:
"Welcome admin you are an authenticated user"
If the information is failed:
"The authentication information entered is not correct!"
If you cancel the pop up:
"You cancelled the authentication"

免责声明:

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

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

PHP 身份验证

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP 身份验证

HTTP 身份验证向客户端发送特殊的 HTTP 标头,并要求提供身份验证代码以访问该页面。它是一种 PHP 内置方法,用于验证用户是否执行特定任务。PHP 有两种 HTTP 身份验证方法,Basic 和 Digest。HTTP 身份验证将生
PHP 身份验证
2024-02-27

Kerberos身份验证问题

Kerberos是一种网络身份验证协议,用于验证用户和服务器之间的身份。它使用票据传输技术,通过在客户端和服务器之间传递票据来实现身份验证。Kerberos身份验证过程包括以下步骤:1. 客户端请求票据:客户端向Kerberos服务器发送身
2023-09-08

使用 PHP Curl 执行 HTTP 身份验证

本文介绍如何在 Ubuntu 中使用 PHP cURL 执行 HTTP 身份验证。php-curl 简介cURL(客户端 URL)是一个命令行实用程序,用于发送或接收数据和文件。 它使用 URL 语法,支持 FTP、FTPS、DICT、HT
使用 PHP Curl 执行 HTTP 身份验证
2024-02-27

亚马逊身份证验证器

亚马逊身份证验证器通常会在计算机或移动设备上运行,通过摄像头和麦克风来获取用户的身份信息,例如他们的脸部特征、指纹、虹膜等。然后,这些信息会被加密并传输到亚马逊的服务器上,以确保用户的账户安全。有些亚马逊身份证验证器还可以使用密码和生物识别技术来增强安全性,例如指纹识别和面部识别技术。总的来说,亚马逊身份证验证器是一种安全和方便的工具,可以帮助用户在网上购物和其他活动中更加安全和保护他们的账户。
2023-10-27

PHP Session 跨域与身份验证的关系

在Web开发中,跨域和身份验证是两个非常重要的概念。PHP Session在处理这两个问题时起着至关重要的作用。本文将介绍PHP Session在跨域访问和身份验证方面的关系,并提供代码示例以解释其实际应用。首先,我们来了解一下什么是跨域访
2023-10-21

PHP中IIS7怎么实现基本身份验证

这篇文章主要讲解了“PHP中IIS7怎么实现基本身份验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中IIS7怎么实现基本身份验证”吧!在PHP运行环境中配置IIS7实现基本身份验证
2023-06-17

亚马逊验证身份信息

如果您错过了验证身份的步骤,您可以尝试以下方法来解决问题:检查您的电子邮件和账户通知:亚马逊通常会发送验证相关的电子邮件或在您的卖家中心账户中提供通知。检查您的电子邮件收件箱、垃圾邮件箱和亚马逊卖家中心账户,确保没有错过任何验证通知。联系亚马逊客服:联系亚马逊客服寻求帮助。您可以通过卖家中心的帮助与客户服务页面找到相应的联系方式,与亚马逊客服沟通并说明你错过了身份验证步骤的情况。客服会提供具体的解...
2023-10-27

Node.js OAuth:身份验证的未来

Node.js OAuth 提供了一种安全高效的方法来处理第三方应用程序的认证和授权。它简化了应用程序开发,增强了安全性和用户体验。
Node.js OAuth:身份验证的未来
2024-02-19

SSL证书如何验证网站身份

SSL证书通过验证网站的身份来确保用户与网站之间的通信安全。验证网站身份的方式包括以下几种:证书颁发机构(CA)验证:CA是负责签发SSL证书的第三方机构,它会对申请SSL证书的网站进行身份验证,确保该网站的所有者和域名是合法有效的。域名验
SSL证书如何验证网站身份
2024-04-17

PHP Session 跨域的会话管理与身份验证

引言:在现代的网络应用开发中,会话管理和身份验证是非常重要的安全措施。PHP提供了一个方便而强大的会话管理机制——PHP Session。然而,当应用程序需要跨域访问时,会话管理和身份验证就变得更加复杂。本文将介绍如何使用PHP Sessi
2023-10-21

Java身份证验证方法实例详解

Java身份证验证方法实例详解身份证号码验证 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码, 八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码
2023-05-31

Java如何实现身份证号码验证

小编给大家分享一下Java如何实现身份证号码验证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package xxx;/** * Created by
2023-05-31

一个简单的身份证校验

需要椒盐虾身份证号的正确性,大致了搜了下, 感觉用datetime校验时间比正则,就改了下代码 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2018
2023-01-30

ASP.NET项目中的JWT身份验证

JWT (JSON Web Token) 是一种用于身份验证的开放标准,可以在客户端和服务器之间传递安全的信息。在ASP.NET项目中使用JWT身份验证,可以按照以下步骤进行:1. 添加NuGet包:打开项目的NuGet包管理器,搜索并安装
2023-09-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录