PHP 实现后台管理与数据交互完整教程

江岸
江岸
发布时间:2026-10-13| 4人浏览过
原创

在前文基础上,本节重点完善 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

目的:允许管理员向数据库中插入新的书籍分类。
流程:

  1. insert_category_form.php:加载表单视图,若未登录则拒绝访问。
  2. 用户提交表单至 insert_category.php。
  3. insert_category.php 接收 $_POST['catname'],调用 insert_category() 函数。
  4. 反馈操作结果给用户。

目录添加表单界面如下:

目录添加

添加成功的提示界面:

目录添加成功

目录页中可以看出多了 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 后台管理系统实现。针对实际生产环境,建议在后续版本中进行以下优化:

  1. 订单系统:增加下单记录表,支持用户查看历史订单状态。
  2. 图像管理:实现图片上传功能,通过 FTP 或服务器本地存储保存图片,并在图书详情中展示。
  3. 高级功能:加入完整的用户注册登录体系、购物车持久化、个性化推荐算法及库存预警机制。

以上就是 PHP 实现后台管理与数据交互的详细内容,更多关于 PHP 项目开发实战的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。