PHP基础HTTP认证与用户管理示例解析

星野
星野
发布时间:2026-10-13 | 6人浏览过
原创

本文详解如何使用PHP实现基于数据库的HTTP基本认证(Basic Authentication)及后续的用户管理功能。内容涵盖认证头校验、MySQL连接配置、以及通过Web界面进行用户状态的激活、停用和删除操作,为理解早期PHP安全架构提供参考。

认证模块与准备条件

该方案的核心在于 auth.inc 文件,它负责拦截未携带正确凭据的请求。在实施前,需确保服务器环境支持PHP 4或更高版本(因代码使用了已废弃的 $PHP_AUTH_USER 超全局变量),并准备好一个包含 auth 表的MySQL数据库。

首先,建立与数据库的连接。在 connect.inc 中定义连接参数:

<?php mysql_connect("localhost", "user", ""); ?>

接着,创建数据库表结构。以下SQL语句定义了存储用户信息的基本架构,包括ID、用户名、姓名、密码、领域(realm)及激活状态:

CREATE TABLE auth ( id smallint(6) DEFAULT '0' NOT NULL auto_increment, username varchar(16) DEFAULT '' NOT NULL, lastname tinyblob, firstname tinyblob, password varchar(16), realm varchar(16), active char(3), PRIMARY KEY (id), UNIQUE id (id), UNIQUE username (username) );

实现HTTP Basic Authentication验证

进入核心的认证逻辑。当用户访问受保护页面时,auth.inc 会检查是否存在HTTP认证头。若缺失,则返回401错误并提示浏览器弹出登录框。

目的:强制客户端提供用户名和密码,否则终止脚本执行。
  • 入口:所有引用 auth.inc 的文件
  • 动作:检查 $PHP_AUTH_USER 是否存在
  • 重要参数:$id 设定认证Realm名称
  • 完成状态:未认证用户看到“Unauthorized”或加载 error.inc
<?php $id = "xxxCOM"; if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm="$id""); Header("HTTP/1.0 401 Unauthorized"); require('error.inc'); exit; } $name = $PHP_AUTH_USER; $pass = $PHP_AUTH_PW; require("connect.inc"); // 此处代码在原始草稿中被截断,通常应在此处比对数据库中的密码 // 原文仅展示查询存在性而非密码比对 $query = "select * from auth where username='$name' && realm='$id'"; $result = mysql_db_query("admin", $query); // ... 后续逻辑判断行数和active状态 

注意:原文代码仅验证用户名是否存在且处于激活状态,并未对 $PHP_AUTH_PW 进行哈希比对,这在生产环境中是不安全的,仅适用于学习HTTP头部交互机制。

构建用户管理后台

验证通过后,可进入 usermanage.php 进行用户管理。此页面进一步限制了只有管理员(hardcoded 'admin')才能访问,并提供图形化操作界面。

第1步:管理员身份复核

在渲染管理界面前,再次检查登录凭据是否为预设的管理员账号。若非管理员,直接输出拒绝信息。

第2步:执行用户状态变更

通过URL参数传递操作指令(activate/deactivate/delete)。脚本根据 $id 更新数据库:

  • 激活/停用:UPDATE语句修改 active 字段为 'yes' 或 'no'。
  • 删除:DELETE语句移除指定ID的记录。

每次操作成功后,脚本输出反馈并显示返回列表的链接。风险提示:涉及删除操作时,务必提前备份 auth 表数据,防止误删导致账户丢失。

第3步:渲染用户列表表格

使用 mysql_fetch_array 遍历所有用户,动态生成HTML表格。对于每个用户,根据其 active 状态显示对应的操作链接:

  • 若状态为 'yes',显示“Deactivate”和“Delete”链接。
  • 若状态为 'no',显示“Activate”和“Delete”链接。
// 核心循环片段 $query = "SELECT * FROM auth"; $result = mysql_db_query("admin", $query); while ($r = mysql_fetch_array($result)) { $id = $r["id"]; $username = $r["username"]; // ... 其他字段获取 if ($activated == "yes") { echo "Deactivate"; } elseif ($activated == "no") { echo "Activate"; } }

安全警示与总结

上述代码展示了PHP处理HTTP认证和用户管理的底层逻辑,但存在显著的安全缺陷:
1. 使用了已废弃的 mysql_* 函数库,极易遭受SQL注入攻击;
2. 密码未加密存储,且在认证环节未严格比对密码哈希;
3. 硬编码的管理员凭据不具备可扩展性。

在实际项目中,请改用 PDO 或 MySQLi 扩展,启用预处理语句,并采用 password_hash() 进行密码管理。

以上就是PHP实现HTTP基本认证及用户管理功能的详细内容,更多关于PHP基础教程和安全编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表