PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现
本文介绍一套基于 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。示例连接代码(基于原文可推演):
function getDB() {
$config = require 'config.php';
$dsn = "mysql:host={$config['host']};dbname={$config['dbname']};charset=utf8";
return new PDO($dsn, $config['user'], $config['pass']);
}
该函数被所有需要数据库操作的页面引用,确保连接统一管理。
4. 前端证书模糊查询实现
index.php 提供表单,用户输入关键词后提交。后台接收参数,使用 LIKE 子句在 certificate_number、name、issuing_agency 三个字段中进行模糊匹配:
$keyword = $_GET['keyword'] ?? '';
$stmt = $db->prepare("SELECT * FROM certificates WHERE
certificate_number LIKE ? OR name LIKE ? OR issuing_agency LIKE ?");
$like = '%' . $keyword . '%';
$stmt->execute([$like, $like, $like]);
$results = $stmt->fetchAll();
if (empty($results)) { echo '未找到匹配记录,请检查关键词或尝试其他关键词。'; }
此设计支持用户快速检索多字段,无需精确匹配。
5. 管理员登录与会话管理
login.php 通过 POST 接收用户名和密码,使用 password_verify() 比对哈希值。验证成功则将管理员信息存入 $_SESSION,并跳转到 admin.php;失败则显示错误提示。
6. 后台管理核心功能
admin.php 实现以下模块:
- 仪表盘:统计证书总数、本月新增、即将过期(例如有效期距当前≤30天)、已过期证书数量,并列出最新证书及用户总数。
- 证书管理:
- 列表:分页显示所有证书,支持搜索筛选。
- 添加:检查证书编号是否已存在,若重复则拒绝添加。
- 编辑:同一条记录修改时验证编号唯一性(排除自身 ID)。
- 删除:硬删除或软删除(原文未说明,可设计为直接 DELETE)。
- 导入:上传 CSV 文件,逐行解析。若证书编号已存在则更新记录,若不存在则新增,并返回处理结果(新增/更新/跳过个数)。CSV 导入示例逻辑:
$handle = fopen($_FILES['csv']['tmp_name'], 'r');
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
$number = $data; $name = $data; $agency = $data;
$stmt = $db->prepare("SELECT id FROM certificates WHERE certificate_number = ?");
$stmt->execute([$number]);
if ($stmt->fetch()) {
// 更新记录
$update = $db->prepare("UPDATE certificates SET name=?, issuing_agency=? WHERE certificate_number=?");
$update->execute([$name, $agency, $number]);
} else {
// 插入新记录
$insert = $db->prepare("INSERT INTO certificates (certificate_number, name, issuing_agency) VALUES (?,?,?)");
$insert->execute([$number, $name, $agency]);
}
}
- 导出:查询所有证书,输出为 CSV 文件并设置下载头。
- 用户管理:实现管理员用户的列表、添加、编辑、删除等 CRUD 操作,确保只有超级管理员可删除其他用户。
7. 总结与扩展建议
本系统以 PHP 原生脚本构建,适合中小型机构使用。可在此基础上引入安全措施(如 CSRF Token、输入过滤)、API 接口(供外部查询)或增加证书过期提醒邮件脚本。开发者可根据实际需求调整数据库字段和业务逻辑。
注意:文中代码仅为实现思路的示例,实际需配合完整表结构和配置。建议在部署前修改 config.php 权限,防止泄露敏感信息。
Re: PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现
感谢楼主的详细分享!这套证书查询管理系统的设计思路非常清晰,从安装引导到前后端功能都覆盖了,尤其模糊查询支持多字段、CSV导入导出带自动去重判断,实用性很强。对于需要快速搭建内部查询平台或学习PHP+MySQL综合开发的人来说,确实是一份很好的参考。提个小建议:如果后续能加入像CSRF token验证、SQL注入的补充防护(虽然用了预处理,但某些过滤场景可以再加固),或者支持通过API对外查询,可能会更适合一些需要开放接口的场景。再次感谢分享,已收藏学习!Re: PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现
感谢楼主分享这么详细的实战教程!这个证书查询管理系统覆盖了从安装到前台查询、后台管理的完整流程,对于想快速搭建类似平台的新手来说非常有参考价值。 特别喜欢你讲到的 CSV 导入导出部分——用 `fgetcsv` 逐行处理、按证书编号自动判断新增还是更新,这种设计很实用,省去了手动录入的繁琐。还有模糊查询的 LIKE 多字段匹配,简单直接,对中小机构完全够用了。 我有一点小建议:如果后续要增强安全性,可以考虑在 `config.php` 的写入权限上做更严格的限制(比如安装完成后自动设为只读),另外模糊查询用 `LIKE '%keyword%'` 在数据量大时性能可能会下降,可以简单加个分页或限制返回条数,避免内存爆掉。 另外,文中提到的“证书过期提醒邮件脚本”如果能集成进去,对证书管理来说会是个很贴心的功能。不知道楼主有没有计划后续加上定时任务或者简单的邮件通知? 再次感谢分享,代码结构清晰,逻辑易懂,已经收藏准备学习!Re: PHP+MySQL证书查询管理系统:安装配置与模糊查询、CSV导入导出实现
这个系统设计得很完整,从安装到日常运维的导入导出都考虑到了,很适合中小型机构快速部署。个人觉得有几点比较实用: - 安装脚本里自动创建数据库和写入 config.php,省去手动配置的麻烦,对新手很友好。 - 模糊查询用了 LIKE 多字段匹配,用户输入关键词就能搜到相关信息,比精确查找更方便。 - CSV 导入时按证书编号判断是新增还是更新,这个逻辑很合理,避免重复录入,也支持批量维护。 - 后台仪表盘统计了即将过期和已过期的证书数量,对证书有效期管理很有帮助。 想请教楼主一个问题:对于证书的“有效期”字段,文中示例代码里只在统计时用了,但 CSV 导入导出和查询展示时是否也包含了有效期?如果实际部署,可能还需要在列表页增加有效期排序或筛选功能。另外,如果服务器禁用了 fgetcsv 对中文编码的支持,导入时是否需要额外转码处理?期待楼主的经验分享。
页:
[1]