查看: 389|回复: 1

PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
本文介绍一套基于 PHP 和 MySQL 开发的证书查询管理系统,涵盖系统安装、数据库连接、模糊查询、管理员登录、证书增删改查以及 CSV 文件的导入导出功能。适合需要快速搭建证书查询平台或学习 PHP+MySQL 综合应用的开发者参考。

1. 系统结构概述
项目包含以下关键脚本:
- install.php:首次安装向导,创建数据库、数据表并添加管理员。
- config.php:存储数据库主机、库名、用户名、密码等连接参数。
- functions.php:封装数据库连接函数等公共工具。
- index.php:前端证书查询页面,支持按证书编号、姓名或颁发机构进行模糊搜索。
- login.php:管理员登录入口,验证会话后跳转管理后台。
- admin.php:后台管理页面,包含仪表盘统计、证书管理(列表/添加/编辑/删除/导入/导出)和用户管理。

2. 安装脚本的核心逻辑
install.php 首先检测 config.php 是否存在,若存在则提示“系统已安装”。用户需输入数据库主机、数据库名、数据库用户名、数据库密码以及管理员用户名和密码。安装过程中执行以下操作:
- 创建 MySQL 数据库(若不存在)。
- 创建证书表(字段至少包含证书编号、姓名、颁发机构、有效期等)。
- 创建用户表(存储管理员用户名、密码哈希等)。
- 插入初始管理员记录。
- 将数据库配置写入 config.php 文件。
- 重定向到 index.php。

3. 数据库连接函数的设计
functions.php 中提供数据库连接函数,通常使用 PDO 或 mysqli。示例连接代码(基于原文可推演):
  1. function getDB() {
  2.     $config = require 'config.php';
  3.     $dsn = "mysql:host={$config['host']};dbname={$config['dbname']};charset=utf8";
  4.     return new PDO($dsn, $config['user'], $config['pass']);
  5. }
复制代码
该函数被所有需要数据库操作的页面引用,确保连接统一管理。

4. 前端证书模糊查询实现
index.php 提供表单,用户输入关键词后提交。后台接收参数,使用 LIKE 子句在 certificate_number、name、issuing_agency 三个字段中进行模糊匹配:
  1. $keyword = $_GET['keyword'] ?? '';
  2. $stmt = $db->prepare("SELECT * FROM certificates WHERE
  3.     certificate_number LIKE ? OR name LIKE ? OR issuing_agency LIKE ?");
  4. $like = '%' . $keyword . '%';
  5. $stmt->execute([$like, $like, $like]);
  6. $results = $stmt->fetchAll();
  7. if (empty($results)) { echo '未找到匹配记录,请检查关键词或尝试其他关键词。'; }
复制代码
此设计支持用户快速检索多字段,无需精确匹配。

5. 管理员登录与会话管理
login.php 通过 POST 接收用户名和密码,使用 password_verify() 比对哈希值。验证成功则将管理员信息存入 $_SESSION,并跳转到 admin.php;失败则显示错误提示。

6. 后台管理核心功能
admin.php 实现以下模块:
- 仪表盘:统计证书总数、本月新增、即将过期(例如有效期距当前≤30天)、已过期证书数量,并列出最新证书及用户总数。
- 证书管理:
  - 列表:分页显示所有证书,支持搜索筛选。
  - 添加:检查证书编号是否已存在,若重复则拒绝添加。
  - 编辑:同一条记录修改时验证编号唯一性(排除自身 ID)。
  - 删除:硬删除或软删除(原文未说明,可设计为直接 DELETE)。
  - 导入:上传 CSV 文件,逐行解析。若证书编号已存在则更新记录,若不存在则新增,并返回处理结果(新增/更新/跳过个数)。CSV 导入示例逻辑:
  1. $handle = fopen($_FILES['csv']['tmp_name'], 'r');
  2. while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
  3.     $number = $data[0]; $name = $data[1]; $agency = $data[2];
  4.     $stmt = $db->prepare("SELECT id FROM certificates WHERE certificate_number = ?");
  5.     $stmt->execute([$number]);
  6.     if ($stmt->fetch()) {
  7.         // 更新记录
  8.         $update = $db->prepare("UPDATE certificates SET name=?, issuing_agency=? WHERE certificate_number=?");
  9.         $update->execute([$name, $agency, $number]);
  10.     } else {
  11.         // 插入新记录
  12.         $insert = $db->prepare("INSERT INTO certificates (certificate_number, name, issuing_agency) VALUES (?,?,?)");
  13.         $insert->execute([$number, $name, $agency]);
  14.     }
  15. }
复制代码
  - 导出:查询所有证书,输出为 CSV 文件并设置下载头。
- 用户管理:实现管理员用户的列表、添加、编辑、删除等 CRUD 操作,确保只有超级管理员可删除其他用户。

7. 总结与扩展建议
本系统以 PHP 原生脚本构建,适合中小型机构使用。可在此基础上引入安全措施(如 CSRF Token、输入过滤)、API 接口(供外部查询)或增加证书过期提醒邮件脚本。开发者可根据实际需求调整数据库字段和业务逻辑。

注意:文中代码仅为实现思路的示例,实际需配合完整表结构和配置。建议在部署前修改 config.php 权限,防止泄露敏感信息。
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层

Re: PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现

感谢楼主的详细分享!这套证书查询管理系统的设计思路非常清晰,从安装引导到前后端功能都覆盖了,尤其模糊查询支持多字段、CSV导入导出带自动去重判断,实用性很强。对于需要快速搭建内部查询平台或学习PHP+MySQL综合开发的人来说,确实是一份很好的参考。提个小建议:如果后续能加入像CSRF token验证、SQL注入的补充防护(虽然用了预处理,但某些过滤场景可以再加固),或者支持通过API对外查询,可能会更适合一些需要开放接口的场景。再次感谢分享,已收藏学习!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-14 05:27 , Processed in 0.034876 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部