Skip to content

Latest commit

 

History

History
143 lines (110 loc) · 6.4 KB

File metadata and controls

143 lines (110 loc) · 6.4 KB

失物招领平台

这是一个功能完善的校园失物招领平台,旨在帮助学生和教职工快速发布、查找和归还失物。项目采用前后端分离的架构,并集成了邮件通知、账户验证和后台管理等高级功能,注重安全与用户体验。

✨ 主要功能

  • 用户认证

    • 安全注册:新用户注册需要通过邮箱验证码激活账户。
    • 登录/注销:基于 Session 的用户会话管理。
    • 安全密码找回:结合安全问题与邮箱验证码双重验证来重置密码。
    • 安全账户注销:用户注销账户前需要通过邮件验证码确认。
  • 物品管理

    • 发布信息:用户可以发布失物(Lost)或拾物(Found)信息,并上传物品图片。
    • 物品匹配:发布信息后,系统自动进行模糊匹配,并通过邮件通知相关用户。
    • 列表展示:在主页按分类(失物/招领)展示所有物品列表。
    • 物品详情:点击物品可查看详情、图片以及在地图上显示的大致丢失/拾获位置。
    • 状态更新:物主可以将物品状态标记为"已找到"或"已归还"。
    • 信息编辑:物主可以修改自己发布的物品信息。
  • 互动与通知

    • 评论系统:用户可以对物品详情页进行评论。
    • 邮件通知:当收到新评论或有新的匹配物品时,系统会自动发送邮件通知。
    • 消息中心:聚合所有未读的评论消息,点击后标记为已读。
  • 后台管理系统

    • 管理员认证:独立的管理员登录入口。
    • 数据看板:在后台集中展示数据库中的所有核心数据表(用户、物品、评论等)。
    • 数据操作:管理员可以直接在后台界面上对任意表的数据进行 修改删除

🛠️ 技术栈

  • 前端:

    • HTML5
    • CSS3
    • JavaScript (ES6+): 使用原生JS处理DOM操作和API请求 (Fetch API)。
  • 后端:

    • PHP 8.1.2
    • PHPMailer: 用于处理所有邮件发送任务。
    • 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               # 本文件

🚀 安装与部署指南

请遵循以下步骤来安装和部署本项目。

1. 先决条件

  • 一个支持PHP和MySQL的Web服务器环境(如 LAMP, WAMP, XAMPP)。
  • Apache Web服务器(推荐使用 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版本)。

2. 数据库设置

  1. 登录您的MySQL服务器。

  2. 创建一个新的数据库,例如lost_and_found;

  3. 导入项目根目录下的 DB_create.sql 文件到您新创建的数据库中。这将创建所有必需的表。

    sudo mysql -u [用户名] -p [数据库名] < DB_create.sql

    记得设置开机自启动。

3. 后端配置

  1. 克隆或下载项目 将项目文件放置到您的 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               # 本文件
    
  2. 安装依赖: 进入 /var/www/html/ 目录,运行Composer来安装 PHPMailer。

    cd /var/www/html/
    composer require phpmailer/phpmailer
  3. 配置数据库连接: 打开 backend/config/database.php 文件,修改其中的数据库连接信息,使其与您在第2步中设置的保持一致。

  4. 配置邮件服务: 打开 backend/config/mailer.php 文件,填入您的SMTP邮件服务器信息。这是系统发送验证码和通知邮件的关键。

    注意:如果使用QQ、163等邮箱,您需要使用授权码而非登录密码,同时注意SMTPSecurePort的设置。

  5. 配置地图服务: 推荐使用“天地图” 在frontend\index.htmlfrontend\details.htmlfrontend\pages\publish.jsfrontend\pages\edit-listing.js几个文件中填写你的地图API!!!

4. Web服务器配置

  • 以Apache 为例配置:

    根据不同的安全需求可以对服务器进行不同的配置

5. 访问项目

完成以上所有配置后,重启您的Apache服务器。现在,您可以通过浏览器访问您的域名或IP地址,首先会看到项目的欢迎页面。

  • 普通用户入口: http://yourdomain.com/
  • 管理员后台: http://yourdomain.com/frontend/admin/
  • 如何设置管理员: 你需要先在web的注册页面注册一个普通用户,然后使用sql语句将数据库中对应的账号的role字段设置为'admin'。

🔒 安全注意事项

  • 使用了 Prepared Statements 防止SQL注入。
  • 使用了 password_hash()password_verify() 对用户密码进行安全地哈希处理。
  • 关键操作(注册、找回密码、注销账户)均采用邮件验证码进行二次确认。
  • 建议进行Web服务器配置,实现文档根目录与应用逻辑的物理隔离,最大化提升安全性。
  • 对用户输入进行了基础的HTML内容清理,防止XSS攻击。