这是一个功能完善的校园失物招领平台,旨在帮助学生和教职工快速发布、查找和归还失物。项目采用前后端分离的架构,并集成了邮件通知、账户验证和后台管理等高级功能,注重安全与用户体验。
-
用户认证:
- 安全注册:新用户注册需要通过邮箱验证码激活账户。
- 登录/注销:基于 Session 的用户会话管理。
- 安全密码找回:结合安全问题与邮箱验证码双重验证来重置密码。
- 安全账户注销:用户注销账户前需要通过邮件验证码确认。
-
物品管理:
- 发布信息:用户可以发布失物(Lost)或拾物(Found)信息,并上传物品图片。
- 物品匹配:发布信息后,系统自动进行模糊匹配,并通过邮件通知相关用户。
- 列表展示:在主页按分类(失物/招领)展示所有物品列表。
- 物品详情:点击物品可查看详情、图片以及在地图上显示的大致丢失/拾获位置。
- 状态更新:物主可以将物品状态标记为"已找到"或"已归还"。
- 信息编辑:物主可以修改自己发布的物品信息。
-
互动与通知:
- 评论系统:用户可以对物品详情页进行评论。
- 邮件通知:当收到新评论或有新的匹配物品时,系统会自动发送邮件通知。
- 消息中心:聚合所有未读的评论消息,点击后标记为已读。
-
后台管理系统:
- 管理员认证:独立的管理员登录入口。
- 数据看板:在后台集中展示数据库中的所有核心数据表(用户、物品、评论等)。
- 数据操作:管理员可以直接在后台界面上对任意表的数据进行 修改 或 删除。
-
前端:
HTML5CSS3JavaScript (ES6+): 使用原生JS处理DOM操作和API请求 (Fetch API)。
-
后端:
PHP 8.1.2PHPMailer: 用于处理所有邮件发送任务。Composer 2.8.9: 用于管理后端依赖。
-
数据库:
MySQL
-
Web服务器:
Apache 2.4.52
/
├── backend/ # 后端代码
│ ├── api/ # API接口目录
│ ├── config/ # 配置文件 (数据库, 邮件)
│ ├── uploads/ # 用户上传的图片
│ └── composer.json # 后端依赖管理
├── frontend/ # 前端代码 (HTML/CSS/JS)
├── DB_create.sql # 数据库初始化脚本
├── index.html # 项目统一入口/欢迎页面
└── README.md # 本文件
请遵循以下步骤来安装和部署本项目。
- 一个支持PHP和MySQL的Web服务器环境(如
LAMP,WAMP,XAMPP)。 ApacheWeb服务器(推荐使用 2.4.52 版本)。PHP(推荐 8.1.2 版本,安装常用拓展,例如,sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-curl php8.1-gd php8.1-mbstring php8.1-zip)MySQL数据库。Composer(用于安装PHP依赖,建议2.8.9版本)。
-
登录您的MySQL服务器。
-
创建一个新的数据库,例如
lost_and_found; -
导入项目根目录下的
DB_create.sql文件到您新创建的数据库中。这将创建所有必需的表。sudo mysql -u [用户名] -p [数据库名] < DB_create.sql记得设置开机自启动。
-
克隆或下载项目 将项目文件放置到您的 Web 服务器根目录。 以
Apache为例,需要将本项目"lost_and_found"文件夹中的内容放在/var/www/html/下,而不是直接将整个"lost_and_found"文件夹放在/var/www/html/下,即: (注意直接放在html/下)html/ ├── backend/ # 后端代码 │ ├── api/ # API接口目录 │ ├── config/ # 配置文件 (数据库, 邮件) │ ├── uploads/ # 用户上传的图片 │ └── composer.json # 后端依赖管理 ├── frontend/ # 前端代码 (HTML/CSS/JS) ├── DB_create.sql # 数据库初始化脚本 ├── index.html # 项目统一入口/欢迎页面 └── README.md # 本文件 -
安装依赖: 进入
/var/www/html/目录,运行Composer来安装 PHPMailer。cd /var/www/html/ composer require phpmailer/phpmailer -
配置数据库连接: 打开
backend/config/database.php文件,修改其中的数据库连接信息,使其与您在第2步中设置的保持一致。 -
配置邮件服务: 打开
backend/config/mailer.php文件,填入您的SMTP邮件服务器信息。这是系统发送验证码和通知邮件的关键。注意:如果使用QQ、163等邮箱,您需要使用授权码而非登录密码,同时注意SMTPSecure和Port的设置。
-
配置地图服务: 推荐使用“天地图” 在
frontend\index.html、frontend\details.html、frontend\pages\publish.js、frontend\pages\edit-listing.js几个文件中填写你的地图API!!!
-
以Apache 为例配置:
根据不同的安全需求可以对服务器进行不同的配置
完成以上所有配置后,重启您的Apache服务器。现在,您可以通过浏览器访问您的域名或IP地址,首先会看到项目的欢迎页面。
- 普通用户入口:
http://yourdomain.com/ - 管理员后台:
http://yourdomain.com/frontend/admin/ - 如何设置管理员: 你需要先在web的注册页面注册一个普通用户,然后使用sql语句将数据库中对应的账号的role字段设置为'admin'。
- 使用了 Prepared Statements 防止SQL注入。
- 使用了
password_hash()和password_verify()对用户密码进行安全地哈希处理。 - 关键操作(注册、找回密码、注销账户)均采用邮件验证码进行二次确认。
- 建议进行Web服务器配置,实现文档根目录与应用逻辑的物理隔离,最大化提升安全性。
- 对用户输入进行了基础的HTML内容清理,防止XSS攻击。