`
evget
  • 浏览: 144684 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

PHP中实现用户身份认证的方法

阅读更多
文章关键字:|PHP|身份认证|Web|HTTP|MySQL|数据库|WEB|验证|

  用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问。通常,我们可以采用内置于Web于HTTP协议的用户身份验证机制。当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求用户输入用户名和密码,对用户的身份进行验证,以决定用户是否有权访问页面。下面用两种方法来说明其实现原理。

  一、用HTTP标头来实现

  标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串。HTTP采用一种挑战/响应模式对试图进入受密码保护区域的用户进行身份验证。具体来说,当用户首次向Web器发出访问受保护区域的请求时,挑战进程被启动,服务器返回特殊的401标头,表明该用户身份未经验证。客户端浏览器在检测到上述响应之后自动弹出对话框,要求用户输入用户名和密码。用户完成输入之后点击确定,其身份识别信息就被传送到服务端进行验证。如果用户输入的用户名和密码有效,WEB服务器将允许用户进入受保护区域,并且在整个访问过程中保持其身份的有效性。相反,若用户输入的用户名称或密码无法通过验证,客户端浏览器会不断弹出输入窗口要求用户再次尝试输入正确的信息。整个过程将一直持续到用户输入正确的信息位置,也可以设定允许用户进行尝试的最大次数,超出时将自动拒绝用户的访问请求。

  在PHP脚本中,使用函数header()直接给客户端的浏览器发送HTTP标头,这样在客户端将会自动弹出用户名和密码输入窗口,来实现我们的身份认证功能。在PHP中,客户端用户输入的信息传送到服务器之后自动保存在 $PHP_AUTH_USER,$PHP_AUTH_PW,以及 $PHP_AUTH_TYPE这三个全局变量中。利用这三个变量,我们可以根据保存在数据文件或者数据库中用户帐号信息来验证用户身份!

  不过,需要提醒使用者注意的是:只有在以模块方式安装的PHP中才能使用$PHP_AUTH_USER,$PHP_AUTH_PW,以及 $PHP_AUTH_TYPE这三个变量。如果用户使用的是CGI模式的PHP则无法实现验证功能。在本节后附有PHP的模块方式安装方法。

  下面我们用MySQL数据库来存储用户的身份。我们需要从数据库中提取每个帐号的用户名和密码以便与$PHP_AUTH_USER和$PHP_AUTH_PW变量进行比较,判断用户的真实性。

  首先,在MySQL中建立一个存放用户信息的数据库

  数据库名为XinXiKu ,表名为user;表定义如下:

以下为引用的内容:

create table user(

 ID INT(4) NOT NULL AUTO_INCREMENT,

 name VARCHAR(8) NOT NULL,

 password CHAR(8) NOT NULL,

 PRIMARY KEY(ID)

)

  说明:

  1、ID为一个序列号,不为零而且自动递增,为主键;

  2、name为用户名,不能为空;

  3、password为用户密码,不能为空;

  以下是用户验证文件login.php

以下为引用的内容:

﹤?PHP//判断用户名是否设置

if(!isset($PHP_AUTH_USER)) {

 header("WWW-Authenticate:Basic realm="身份验证功能"");

 header("HTTP/1.0 401 Unauthorized");

 echo "身份验证失败,您无权共享网络资源!";

 exit();

}

/*连接数据库*/

$db=mysql_connect("localhost","root","");

//选择数据库

mysql_select_db("XinXiKu",$db);

//查询用户是否存在

$result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db);

if ($myrow = mysql_fetch_row($result)) {

 //以下为身份验证成功后的相关操作
 ...

} else {

 //身份验证不成功,提示用户重新输入

 header("WWW-Authenticate:Basic realm="身份验证功能"");

 header("HTTP/1.0 401 Unauthorized");

 echo "身份验证失败,您无权共享网络资源!";

 exit();

}

?>

  程序说明:

  在程序中,首先检查变量$PHP_AUTH_USER是否已经设置。如果没有设置,说明需要验证,脚本发出HTTP 401错误号头标,告诉客户端的浏览器需要进行身份验证,由客户端的浏览器弹出一个身份验证窗口,提示用户输入用户名和密码,输入完成后,连接数据库,查询该用用户名及密码是否正确,如果正确,允许登录进行相关操作,如果不正确,继续要求用户输入用户名和密码。

  函数说明:

  1、isset():用于确定某个变量是否已被赋值。根据变量值是否存在,返回true或false

  2、header():用于发送特定的HTTP标头。注意,使用header()函数时,一定要在任何产生实际输出的HTML或PHP代码前面调用该函数。

  3、mysql_connect():打开 MySQL 服务器连接。

  4、mysql_db_query():送查询字符串 (query) 到 MySQL 数据库。

  5、mysql_fetch_row():返回单列的各字段。

未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9204
分享到:
评论

相关推荐

    用PHP实现个人身份认证

    身份验证是确认用户身份的过程,确保只有授权的用户能够访问受保护的资源。在Web开发中,这通常通过用户名和密码的组合来实现。以下是一个简单的PHP身份验证系统的工作流程: 1. **注册**:用户首次使用应用时需要...

    phpweb成品网站跳过官方用户身份验证方法

    以下内容将详细讲解如何在PHPWEB环境中实现用户身份验证的跳过,以及涉及的相关知识点。 首先,理解PHPWEB的身份验证机制至关重要。通常,PHPWEB会使用一种常见的身份验证方式,如session或cookie来存储用户的登录...

    PHP中使用crypt()实现用户身份验证

    本文将详细讨论如何在PHP中使用`crypt()`函数进行用户身份验证。 `crypt()`函数的基本使用方法如下: ```php string crypt(string input_string [, string salt]) ``` - `input_string`:这是要加密的明文字符串...

    PHP中对用户身份认证实现两种方法

    在PHP中实现用户身份认证是网站安全性的重要环节,主要目的是确保只有经过授权的用户才能访问特定的受保护资源。本文将介绍两种常见的方法来实现这一功能。 第一种方法是使用HTTP标头进行身份验证,这种方法基于...

    PHP下几种用户身份验证方式初探.pdf

    本文将对PHP中实现用户身份验证的几种常见方法进行探究,以期帮助开发者更好地理解和应用这些验证技术,从而提升Web应用的安全性。 首先,基于静态用户名和密码的验证方式是最基础也是最广泛使用的方法。这种方法...

    统一身份认证系统

    总的来说,开源的统一身份认证系统,如基于"ssm"的实现,为开发者提供了一个强大的工具,用于构建安全、高效的用户认证解决方案。通过学习和实践,开发者不仅可以提升自身的技能,也能为所在组织的信息安全保驾护航...

    用PHP实现用户认证.pdf

    "用PHP实现用户认证.pdf" 本文档主要介绍了如何使用PHP实现用户认证。用户认证是指对用户身份的确认,是网站用来限制访问某些特定信息或服务的重要方法。 Apache Web Server 等流行的Web服务器都提供了基于用户名和...

    php简单的cookie身份验证机制

    在PHP编程中,Cookie是一种常见的身份验证机制,用于在客户端(浏览器)和服务器之间存储和传递信息。这个“php简单的cookie身份验证机制”应该包含了实现这一功能的基本代码和逻辑。以下是对这一主题的详细说明: ...

    浅谈PHP+MYSQL身份验证的方法.

    在IT领域,尤其是在Web开发中,身份验证是一个至关重要的环节,它确保了用户的安全性和系统的完整性。本篇文章将深入探讨如何使用PHP与MySQL进行有效的身份验证。PHP是一种广泛使用的服务器端脚本语言,而MySQL是...

    一个简单的Codeigniter用户登录验证例子程序

    在这个"一个简单的Codeigniter用户登录验证例子程序"中,我们将探讨如何在Codeigniter中实现用户认证和登录功能,这对于任何Web应用来说都是核心部分。这个程序包含了一些关键组件,如密码加密、session管理以及用户...

    在yii中新增一个用户验证的方法详解

    总之,在Yii框架中实现用户验证和授权是通过结合用户身份识别和访问控制两种机制来完成的。开发者首先需要定义并实现一个专门的用户验证类,然后在用户登录过程中利用该类进行验证,并通过用户组件的登录方法完成...

    PHP 实现一个账号仅允许一个用户登陆

    同时,这个ID会通过cookie发送给用户的浏览器,以便后续请求时识别用户身份。 实现"一个账号仅允许一个用户登录"的步骤如下: 1. **用户验证**:当用户尝试登录时,系统需要检查输入的用户名和密码是否匹配数据库...

    php和数据库网页用户管理系统实现

    它处理用户请求,生成动态网页内容,与数据库交互,是实现用户管理系统的关键。 2. **MySQL数据库**:MySQL是一个流行的关系型数据库管理系统(RDBMS),用于存储和管理用户数据。在“student”数据库中,我们将...

    php 身份验证程序,php入学者参考

    这个"php 身份验证程序"可能是为了帮助初学者理解如何在PHP环境中实现用户登录系统的功能。以下将详细介绍PHP身份验证的基本概念、流程以及相关知识点。 1. **基本概念**: - **身份验证**:验证用户提供的凭据...

    统一身份认证平台集成接口文档.doc

    在本文档中,我们将介绍统一身份认证平台的集成接口文档,包括背景知识、CAS 的实现、JAVA 语言和 PHP 语言的实现细节。 1. 统一身份认证简介 统一身份认证平台的主要目的是为了提供一种通用的身份验证机制,使...

    基于PHP的教学辅助系统中身份认证设计.pdf

    首先,PHP是一种解释型的、开源的脚本语言,它被广泛用于Web开发,尤其是与MySQL数据库配合时,能够高效地处理数据和实现用户身份验证。相比之下,CGI(Common Gateway Interface)虽然编程简单,适应性强,但执行...

    PHP中使用crypt()实现用户身份验证的代码

    本文将深入探讨如何在PHP中使用`crypt()` 实现用户身份验证。 首先,让我们了解一下`crypt()` 函数。这是一个内置的PHP函数,用于执行单向加密操作。它接受两个参数:`input_string`,即需要加密的明文字符串,以及...

    编写php应用程序实现摘要式身份验证的方法详解

    在摘要式身份验证中,用户在首次请求需要身份验证的资源时,服务器会返回一个401状态码,并在响应头中包含一个“WWW-Authenticate”字段,提示客户端使用摘要式身份验证。客户端浏览器在接收到这个响应之后,会提示...

    ajax用户身份校验

    **Ajax用户身份校验**是Web开发中一种常见的功能实现,它允许在不刷新整个页面的情况下,通过异步方式向服务器发送请求,检查输入的用户名是否已经被其他用户占用。这种方式提高了用户体验,因为用户可以在输入时...

Global site tag (gtag.js) - Google Analytics