热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP用户认证与管理完整代码实例

本文提供了一个详细的PHP用户认证和管理的代码示例,包括用户登录验证、数据库连接、错误处理等关键部分的实现。

为了确保系统的安全性,下面是一个PHP用户认证和管理的完整代码实例。该实例包括了用户认证、数据库连接以及错误处理等多个方面的实现。



认证脚本(auth.inc):


$id = "exampleRealm";
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="' . $id . '"');
header('HTTP/1.0 401 Unauthorized');
require('error.inc');
exit;
}

$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
require('database_connection.inc');
$query = "SELECT * FROM users WHERE username='$username' AND realm='$id'";
$result = mysqli_query($connection, $query);
if (mysqli_num_rows($result) == 0) {
header('WWW-Authenticate: Basic realm="' . $id . '"');
header('HTTP/1.0 401 Unauthorized');
require('error.inc');
exit;
}

$isActive = mysqli_fetch_assoc($result)['active'];
if ($isActive == 'no') {
echo "Access Denied

Your account is inactive.

";
exit;
}
?>


数据库连接脚本(database_connection.inc):


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "exampleDB";

$cOnnection= mysqli_connect($servername, $username, $password, $dbname);
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
}
?>


错误处理脚本(error.inc):


echo "Error

Authentication failed. Please try again.

";
?>


用户表结构(users表):


CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL,
realm VARCHAR(50) NOT NULL,
active ENUM('yes', 'no') NOT NULL DEFAULT 'no'
);


添加用户示例:


INSERT INTO users (username, password, realm, active) VALUES ('admin', 'hashed_password', 'exampleRealm', 'yes');


用户管理界面(usermanage.php):


include('auth.inc');
if ($_SERVER['PHP_AUTH_USER'] != 'admin' || $_SERVER['PHP_AUTH_PW'] != 'hashed_password') {
header('WWW-Authenticate: Basic realm="exampleRealm"');
header('HTTP/1.0 401 Unauthorized');
echo "Access Denied!";
exit;
}

include('database_connection.inc');
$action = isset($_GET['action']) ? $_GET['action'] : null;
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

switch ($action) {
case 'activate':
$query = "UPDATE users SET active='yes' WHERE id=$id";
if (mysqli_query($connection, $query)) {
echo "User activated successfully.";
} else {
echo "Error activating user.";
}
break;
case 'deactivate':
$query = "UPDATE users SET active='no' WHERE id=$id";
if (mysqli_query($connection, $query)) {
echo "User deactivated successfully.";
} else {
echo "Error deactivating user.";
}
break;
case 'delete':
$query = "DELETE FROM users WHERE id=$id";
if (mysqli_query($connection, $query)) {
echo "User deleted successfully.";
} else {
echo "Error deleting user.";
}
break;
default:
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);
if ($result) {
echo "";
echo "";
while ($row = mysqli_fetch_assoc($result)) {
$username = $row['username'];
$active = $row['active'];
echo "";
}
echo "
UsernameActiveAction
$username$active";
if ($active == 'yes') {
echo "Deactivate | ";
} else {
echo "Activate | ";
}
echo "Delete
";
}
break;
}
?>

推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 文件描述符、文件句柄与打开文件之间的关联解析
    本文详细探讨了文件描述符、文件句柄和打开文件之间的关系,通过具体示例解释了它们在操作系统中的作用及其相互影响。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
author-avatar
mobiledu2502862117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有