PHP基础HTTP认证与用户管理示例解析
本文详解如何使用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基础教程和安全编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













