PHP 实现后台管理与数据交互完整教程
在前文基础上,本节重点完善 PHP 购物车系统的后台管理功能。内容包括管理员身份验证逻辑、基于 Session 的状态保持、以及对数据库图书分类和书籍信息进行增删改查的操作。通过整合 admin.php、user_auth_fns.php 等核心文件,展示如何通过简单的 PHP 脚本构建一个功能完备的图书管理界面。
后台管理界面与登录认证
要实现后台管理功能,首先需要处理管理员的身份验证。系统通过检查 POST 请求中的用户名和密码,利用数据库记录进行校验。若验证成功,则创建 Session 对象以维持登录状态。
第1步:配置主管理入口 admin.php
目的:作为后台管理的统一入口,负责处理登录逻辑并判断用户权限。
关键逻辑:
- 引入基础函数库:
require_once('book_sc_fns.php')。 - 启动会话:
session_start()。 - 检测登录表单提交:若存在
$_POST['username']和$_POST['passwd'],调用login()函数。 - 权限控制:调用
check_admin_user()检查当前会话是否有效,决定是否显示管理菜单或拒绝访问。
<?php
/**
* @author switch
* @copyright 2015
* 主管理菜单
*/
require_once('book_sc_fns.php');
session_start();
// 尝试登录处理
if(@$_POST['username'] && @$_POST['passwd']) {
$username = $_POST['username'];
$passwd = $_POST['passwd'];
if(login($username, $passwd)) {
$_SESSION['admin_user'] = $username;
} else {
do_html_header("Problem:");
echo "<p>You could not be logged in.<br /> You must be logged in to view this page.</p>";
do_html_URL('login.php','Login');
do_html_footer();
exit;
}
}
do_html_header("Administration");
if(check_admin_user()) {
display_admin_menu();
} else {
echo "<p>You are not authorized to enter the administration area.</p>";
do_html_URL('login.php','Login');
}
do_html_footer();
?>
上述代码对应的登录界面如下图所示:

登录界面
第2步:编写身份验证函数 user_auth_fns.php
目的:提供两个核心辅助函数,分别用于比对数据库凭据和管理员会话状态。
入口:被 admin.php 或其他需要认证的页面包含。
关键参数:$username, $password。
1. 登录验证 login():
- 连接数据库
db_connect()。 - 执行 SQL 查询:
select * from admin where username='...' and password = sha1('...')。注意此处使用了 SHA1 哈希进行密码匹配。 - 若查询结果行数大于 0,返回 true,否则返回 false。
function login($username, $password) {
$conn = db_connect();
if(!$conn) return 0;
$query = "select * from admin where username='" . $username ."'
and password = sha1('" . $password ."')";
$result = $conn->query($query);
if(!$result) return 0;
if($result->num_rows > 0) return 1;
else return 0;
}
2. 检查管理员状态 check_admin_user():
- 仅检查
$_SESSION['admin_user']变量是否存在。
function check_admin_user() {
if(isset($_SESSION['admin_user'])) return true;
else return false;
}
管理主菜单与导航构建
在确认用户合法后,系统需展示功能菜单。菜单包含返回首页、添加分类、添加图书及修改密码等快捷入口。
第3步:生成管理菜单 display_admin_menu()
目的:输出 HTML 格式的超链接列表供管理员选择操作。
动作:遍历打印链接标签到页面。
function display_admin_menu() {
?>
<br />
<a href="index.php">Go to main site</a><br />
<a href="insert_category_form.php">Add a new category</a><br />
<a href="insert_book_form.php">Add a new book</a><br />
<a href="change_password_form.php">Change admin password</a><br />
<?php
}
生成的管理主界面视觉效果如下:

管理主界面
目录与书籍的数据管理 (CRUD)
后台的核心功能是维护数据库中的图书分类(Category)和书籍(Book)。这涉及前端表单呈现、后端数据处理以及数据库交互。
第4步:实现目录添加 insert_category_form.php 与 insert_category.php
目的:允许管理员向数据库中插入新的书籍分类。
流程:
insert_category_form.php:加载表单视图,若未登录则拒绝访问。- 用户提交表单至
insert_category.php。 insert_category.php接收$_POST['catname'],调用insert_category()函数。- 反馈操作结果给用户。
目录添加表单界面如下:

目录添加
添加成功的提示界面:

目录添加成功

目录页中可以看出多了 Novel 目录
insert_category.php 核心逻辑示例:
<?php
require_once('book_sc_fns.php');
session_start();
do_html_header("Adding a category");
if(check_admin_user()) {
if(filled_out($_POST)) {
$catname = $_POST['catname'];
if(insert_category($catname)) {
echo "<p>Category \"" . $catname . "\" was added to the database.</p>";
} else {
echo "<p>Category \"" . $catname . "\" could not be added...</p>";
}
} else {
echo "<p>You have not filled out the form.</p>";
}
do_html_URL("admin.php","Back to administration menu");
}
...
?>
第5步:实现目录编辑与更新 edit_category_form.php / edit_category.php
目的:允许修改现有分类名称。
重要参数:$_GET['catid'] 用于标识要编辑的目标分类 ID。
在 edit_category_form.php 中,系统根据传入的 catid 查询当前分类名,并使用 display_category_form() 填充预填值的表单。提交的表单指向 edit_category.php,后者调用 update_category() 执行更新操作。
管理员目录操作概览:

管理员目录界面

目录编辑界面-可更新,删除
更新成功后的反馈:

目录更新成功

目录主界面可以看到该目录更改成功
第6步:统一管理逻辑 admin_fns.php
大部分数据库操作逻辑集中在 admin_fns.php 中,主要包括以下函数:
- 表单显示:
display_category_form():动态生成分类表单,区分“新增”和“编辑”模式(通过$edit变量判断),并在编辑模式下隐藏传递catid。
display_book_form():生成包含 ISBN、书名、作者、分类下拉框、价格和描述的书籍录入/编辑表单。注意分类下拉框会通过get_categories()填充选项。 - 数据插入:
insert_category():先检查名称重复性,再执行INSERT INTO categories。
insert_book():先检查 ISBN 唯一性,再执行INSERT INTO books。 - 数据更新:
update_category():根据 ID 更新名称。
update_book():由于书籍可能因信息变更而需要重新入库,逻辑上采用“原 ISBN 定位,更新所有字段为新值”的方式。 - 数据删除:
delete_category():安全删除,需先检查关联表中是否存在书籍引用。
delete_book():根据 ISBN 直接删除记录。
// 示例:目录删除安全检查逻辑
function delete_category($catid) {
$conn = db_connect();
// 先检查是否有书属于该目录
$query = "select * from books where catid='" . $catid ."'";
$result = @$conn->query($query);
if((!$result) || (@$result->num_rows > 0)) return false; // 无法删除
$query = "delete from categories where catid='" . $catid ."'";
$result = @$conn->query($query);
if(!$result) return false;
else return true;
}
扩展建议
本部分展示了基础的 PHP 后台管理系统实现。针对实际生产环境,建议在后续版本中进行以下优化:
- 订单系统:增加下单记录表,支持用户查看历史订单状态。
- 图像管理:实现图片上传功能,通过 FTP 或服务器本地存储保存图片,并在图书详情中展示。
- 高级功能:加入完整的用户注册登录体系、购物车持久化、个性化推荐算法及库存预警机制。
以上就是 PHP 实现后台管理与数据交互的详细内容,更多关于 PHP 项目开发实战的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









