MangoChat (MGO-Liao) 增强版
MangoChat 增强版 是在原版轻量聊天室基础上深度升级的单文件 PHP 应用。
在保留“零数据库、纯 JSON 存储”核心特性的同时,新增了私聊、在线用户列表、管理面板、CSRF 防护、长轮询、消息搜索等功能,并全面优化了兼容性与安全性。主色调延续芒果黄,界面更加精致实用。
增强版新增特性
与原版相比,增强版带来了以下重要改进:
- 私聊系统:支持一对一私下聊天,侧边栏实时显示在线用户,点击即可发起私聊。
- 在线用户列表:基于心跳机制,动态显示当前在线用户,30 秒无活动自动离线。
- 管理后台:管理员可查看所有用户、删除用户、删除任意群组(大厅除外)。
- 长轮询 (Long Polling):采用统一
poll接口,支持长轮询模式,消息刷新更及时,减少无效请求。 - 消息搜索:聊天窗口顶部集成搜索框,支持按消息内容或用户名实时过滤。
- CSRF 防护:所有状态变更请求(POST)均需携带 CSRF Token,防范跨站请求伪造。
- 更强兼容性:声明
strict_types,检查 PHP 版本 (>=7.4),优化文件锁与错误处理。 - 消息容量提升:每个群组/私聊对话保留最近 1000 条消息(原 500 条)。
- 用户活跃追踪:记录用户最后活跃时间,管理面板可查看。
- 响应式优化:移动端适配更加完善,侧边栏支持滑出,布局自适应。
功能总览
- 零数据库依赖:全部数据通过 JSON 文件持久化,开箱即用。
- 一键安装向导:首次访问自动引导配置聊天室名称与管理员账号。
- 多群组管理:用户可创建、切换不同公开群组,管理员可删除群组。
- 用户系统:支持注册、登录,密码安全哈希存储。
- 私聊功能:与在线用户实时私密对话。
- 实时聊天:基于长轮询 / 短轮询机制,消息自动刷新,低延迟。
- 消息管理:用户可删除自己消息,管理员可删除任意消息。
- 在线状态:侧边栏显示在线人数及用户列表,私聊对象动态更新。
- 管理面板:管理员可查看所有用户,删除用户,管理群组。
- 消息搜索:输入关键词即时筛选当前聊天记录。
- CSRF 防护:所有敏感操作均验证 Token。
- 响应式设计:完美适配桌面端与移动端。
快速开始
环境要求
- PHP >= 7.4
- Web 服务器(Apache、Nginx 等)
- 项目根目录需具有写入权限(用于自动创建
data/目录)
部署步骤
- 将增强版单 PHP 文件(如
index.php)放置于网站根目录或任意可访问目录。 - 通过浏览器访问该文件对应的 URL。
- 首次访问将进入安装界面,设定聊天室名称(默认为“忙狗聊”)、管理员用户名及密码。
- 点击“开始安装”,系统将生成配置文件及数据目录,同时创建大厅群组和管理员账号。
- 安装完成后即可登录并使用全部功能。
所有数据均存储在项目根目录下的
data/文件夹内,包括用户、群组、聊天记录及私聊记录。
使用说明
用户指南
- 注册 / 登录:未登录用户可注册新账号或使用已有账号登录。
- 群聊:左侧“群组”列表点击切换群组,在大厅或其他群组中发送消息。
- 私聊:左侧“私聊”区域显示当前在线用户,点击用户名即可发起一对一私聊。
- 发送消息:底部输入框键入内容,按
Enter发送(Shift+Enter换行)。 - 搜索消息:顶部搜索框输入关键词,消息列表自动过滤匹配项。
- 删除消息:悬停在自己发送的消息上,点击删除按钮可撤回;管理员可删除所有人的消息。
- 创建群组:点击侧边栏底部的“+ 建群”按钮,输入群组名称即可创建。
- 退出登录:侧边栏底部提供退出链接。
管理功能
- 管理员(安装时创建的第一个账户)拥有额外权限:
- 侧边栏出现“管理”按钮,进入管理面板。
- 在管理面板中可查看所有注册用户,删除其他用户。
- 可查看并删除任意非大厅群组。
- 聊天窗口中可删除任意用户的消息。
如需添加更多管理员,可手动编辑
data/users.json,将对应对象的is_admin设为true。
文件结构
project-root/
├── index.php # 唯一入口文件(包含全部前后端逻辑)
└── data/ # 数据目录(自动创建)
├── config.json # 聊天室配置
├── users.json # 用户数据(含密码哈希、活跃时间等)
├── groups.json # 群组信息
├── messages_lobby.json # 大厅消息记录
├── messages_<gid>.json # 各群组消息记录
└── pm_<uid1>_<uid2>.json # 私聊消息记录(按用户ID排序)
技术细节与自定义
- 长轮询:前端通过
api=poll接口实现,服务器最长保持 25 秒,有新消息立即返回,否则超时后返回空数据并指示前端重新发起。 - CSRF 保护:每个会话生成唯一 Token,所有 POST 请求均需携带,Token 验证失败返回 403。
- 在线判定:每次 API 请求更新
last_active时间戳,前端每 30 秒判定离线。 - 自定义样式:所有颜色及样式变量定义在页面内的
:root中,可按需调整芒果黄相关色值。 - 调整限制:
- 消息存储上限:修改 API 中
array_slice的保留数量(默认 1000)。 - 长轮询等待时长:修改
poll接口中的$max_wait变量(默认 25 秒)。 - 在线超时阈值:修改
get_online_users函数中的$threshold值(默认 30 秒)。
- 消息存储上限:修改 API 中
- 图标说明:当前界面使用 Emoji 作为图标,如需替换为开源图标库(如 Font Awesome、Material Icons),可在页面中引入对应 CSS 并替换 Unicode 符号。
关于
MangoChat 增强版 由 Mango 团队开发,主要开发者:叫我弓木吉。
本项目仅供学习与交流,欢迎通过 Issue 或 Pull Request 贡献代码。
许可证
本项目基于 MIT License 开源,详情请参阅 LICENSE 文件。