# HuSNS开源社交平台 **Repository Path**: youruihu/husns ## Basic Information - **Project Name**: HuSNS开源社交平台 - **Description**: 一款开源免费的SNS社区系统,基于mit协议,希望您喜欢! - **Primary Language**: PHP - **License**: MIT - **Default Branch**: main - **Homepage**: https://huyourui.com - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-03-22 - **Last Updated**: 2026-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HuSNS 一款免费开源的轻量级社交平台系统。 ## 项目简介 HuSNS 是一个基于 PHP 开发的轻量级社交平台,采用自研 MVC 架构,无需依赖第三方框架,开箱即用。系统功能完整,包含用户注册登录、动态发布、评论互动、关注体系、话题聚合、积分系统等社交平台核心功能。 ## 功能特性 - 📝 **动态发布** - 支持文字、图片、视频、附件发布 - 💬 **互动交流** - 评论、点赞、转发功能 - 👥 **社交关系** - 用户关注、粉丝体系 - 🏷️ **话题系统** - #话题# 标签聚合 - 📧 **邮件通知** - 邮箱验证、消息通知 - 🎯 **积分系统** - 可自定义积分规则 - 🔒 **隐藏内容** - [hide]标签评论可见 - 👤 **@提及** - @用户名 提醒功能 - 🎨 **主题切换** - 支持明暗主题切换 - 🔌 **插件系统** - 钩子机制支持扩展 - 📱 **响应式设计** - 适配PC和移动端 - 📦 **依赖注入** - 降低类之间耦合度 - 📋 **日志系统** - 完善的日志记录功能 - ⚠️ **异常处理** - 统一的异常处理机制 - 🧪 **单元测试** - 内置测试框架 - 🚀 **RESTful API** - 完整的API接口支持 - ⚡ **异步队列** - 任务队列异步处理 ## 环境要求 - PHP >= 7.4.0 - MySQL >= 5.6 - PDO 扩展 - GD 库 - MBString 扩展 - JSON 扩展 ## 安装说明 1. 下载源码并解压到网站目录 2. 配置 Web 服务器指向项目根目录 3. 访问网站,自动跳转到安装向导 4. 按照向导填写数据库信息和管理员账号 5. 完成安装 ### Nginx 配置示例 ```nginx server { listen 80; server_name your-domain.com; root /path/to/husns; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` ### Apache 配置 项目已包含 `.htaccess` 文件,确保 Apache 开启了 `mod_rewrite` 模块。 ## 目录结构 ``` ├── admin/ # 后台管理控制器 ├── content/ # 内容模块 │ ├── announcement/ # 公告模块 │ ├── download/ # 下载模块 │ ├── link/ # 友情链接 │ ├── notification/ # 通知模块 │ ├── point/ # 积分模块 │ ├── post/ # 帖子模块 │ ├── topic/ # 话题模块 │ └── user/ # 用户模块 ├── controller/ # 控制器(命名空间) │ └── Traits/ # 控制器Traits ├── core/ # 核心框架 │ ├── App.php # 应用主类 │ ├── Container.php # 依赖注入容器 │ ├── Controller.php # 控制器基类 │ ├── Database.php # 数据库抽象层 │ ├── ExceptionHandler.php # 异常处理器 │ ├── Helper.php # 工具函数 │ ├── Hook.php # 钩子系统 │ ├── Logger.php # 日志系统 │ ├── Model.php # 模型基类 │ ├── Security.php # 安全处理 │ ├── Setting.php # 系统设置 │ ├── View.php # 视图引擎 │ ├── BaseRepository.php # Repository基类 │ ├── Contracts/ # 接口定义 │ │ ├── RepositoryInterface.php │ │ └── LoggerInterface.php │ └── ... ├── install/ # 安装程序 ├── plugins/ # 插件目录 ├── repository/ # 数据仓库(命名空间) │ ├── PostRepository.php │ └── UserRepository.php ├── static/ # 静态资源 ├── templates/ # 模板文件 ├── tests/ # 单元测试 ├── uploads/ # 上传目录 ├── logs/ # 日志目录 ├── config.php # 配置文件 └── index.php # 入口文件 ``` ## 后台管理 访问 `/?r=admin` 进入后台管理页面,支持: - 用户管理(查看、编辑、封禁) - 帖子管理(删除、置顶、加精) - 话题管理(置顶、屏蔽) - 系统设置(站点配置、注册设置、邮件配置等) - 插件管理 ## 开发扩展 ### 创建插件 1. 在 `plugins/` 目录创建插件文件夹 2. 创建 `Plugin.php` 主文件和 `info.json` 配置文件 3. 使用钩子系统注册事件 ```php 1]); Logger::error('数据库错误', ['error' => $e->getMessage()]); Logger::debug('请求参数', $_REQUEST); ``` ### 单元测试 ```bash # 运行所有测试 php tests/run.php # 运行指定测试 php tests/run.php Helper ``` ## 安全说明 - 密码采用 bcrypt + salt 加密存储 - CSRF Token 验证 - XSS 过滤 - SQL 注入防护(PDO 预处理) - 文件上传安全检查 - 管理员二次密码验证 - 统一异常处理机制 ## 声明 ⚠️ **严禁用于违法违规用途** 本软件仅供学习和研究使用,使用者需遵守当地法律法规。作者不对因使用本软件而产生的任何后果负责。 ## 技术支持 - 官网:[https://huyourui.com](https://huyourui.com) - QQ:281900864 ## 开源协议 本项目基于 [MIT](LICENSE) 协议开源。 ## 更新日志 ### v3.6.7 (2026-05-01) - 🔒 **安全加固** - CSRF Token 验证后自动轮换,防止重放攻击 - 自动登录 Token 使用 SHA-256 哈希存储,防止数据库泄露后 Token 被滥用 - 自动登录验证使用 hash_equals() 防止时序攻击 - 兼容旧版明文 Token,自动升级为哈希存储 - 🐛 **Bug修复** - 修复隐藏内容 [hide] 标签的 HTML 被 parseContent() 二次转义导致显示异常的问题 - 统一所有页面内容解析逻辑,消除正则表达式不一致问题 - 🔧 **代码优化** - 废弃 sqlInjectCheck() 方法(项目已全面使用 PDO 预处理,该方法无实际意义) - 统一 PostController 中 5 处重复的手动内容解析代码为 Helper::parseContent() - 修复 Model/Controller 层 parseHideContent 职责边界不一致问题 - 新增类型安全的输入获取方法:getInt()、postInt()、getBool()、postBool() - 队列系统使用原子 UPDATE 替代 SELECT FOR UPDATE,避免行锁争用 - 数据库连接失败抛出 DatabaseException 替代 die(),统一异常处理策略 - JSON 响应自动附带新 CSRF Token,前端自动更新 ### v3.6.6 (2026-04-19) - 🐛 **Bug修复** - 修复后台管理 500 错误问题 - 创建缺失的 temp 目录用于缓存 - 增强版本检查的错误处理 - 添加 curl 扩展检查 - 缓存写入失败不影响功能 ### v3.6.5 (2026-04-19) - 🐛 **Bug修复** - 全面修复模板硬编码中文问题 - 修复首页、帖子列表、用户登录等模板 - 更新三种语言包,添加所有缺失的翻译键 - 包括:操作按钮、统计标签、表情面板等 ### v3.6.4 (2026-04-19) - 🐛 **Bug修复** - 修复模板硬编码中文问题 - 将导航栏、页脚、模态框文字改为语言标签 - 更新语言包,添加缺失的翻译键 - 语言切换后界面文字正确显示 ### v3.6.3 (2026-04-19) - 🐛 **Bug修复** - 修复语言切换链接不生效的问题 - 优化 URL 构建逻辑,保留其他参数 - 美化语言切换器样式,更加协调 - 添加渐变背景和悬停效果 ### v3.6.2 (2026-04-19) - 🐛 **Bug修复** - 修复后台默认语言设置不生效的问题 - 优化语言选择逻辑,区分用户主动选择和系统默认 - 将语言切换器移到网站页脚 - 改进语言切换的用户体验 ### v3.6.1 (2026-04-19) - 🐛 **Bug修复** - 修复 I18n 类数据库表前缀问题 - 添加前台语言切换器 UI - 优化语言设置实时生效 - 添加语言切换器样式和交互 ### v3.6.0 (2026-04-19) - ✨ **新功能** - 新增多语言支持系统 - 支持简体中文、繁体中文、英文三种语言 - 后台增加语言设置管理 - 支持自动检测浏览器语言 - 支持用户手动切换语言 - 语言包采用 JSON 格式,便于扩展 - 新增语言切换 API 接口 - 自动语言回退机制(无对应语言时回退到英文) ### v3.5.11 (2026-04-19) - 🐛 **Bug修复** - 修复安装时 `DB_PREFIX` 未定义的错误 - 优化 View.php 在安装模式下的主题获取逻辑 - 增强 Database.php 对配置常量的检查 ### v3.5.10 (2026-04-19) - 🐛 **Bug修复** - 修复夸克浏览器PC版被误判为移动端的问题 - 优化移动端检测逻辑,区分PC端和移动端的国内浏览器 ### v3.5.9 (2026-04-19) - 🐛 **Bug修复** - 修复移动端注册页面`trim()`函数接收null值导致的PHP 8.1+弃用警告 - 修复移动端关注tab页面转发微博原文不显示的问题 - 修复移动端关注tab和全部tab页面不一致的问题,统一使用首页全部页面 - ✨ **UI优化** - 移动端注册页面添加邮箱输入框 - 调整移动端注册页面字段顺序:用户名→邮箱→密码→确认密码 ### v3.5.8 (2026-04-19) - 🐛 **重要Bug修复** - 修复移动端API路由无法正确解析的问题 - 在App.php中添加对`mobileApi/xxx`路由的特殊处理 - 彻底修复首页、热门页、消息页面无法加载数据的问题 ### v3.5.7 (2026-04-19) - 🐛 **Bug修复** - 继续修复移动端首页无法调取微博列表的问题 - 在DOMContentLoaded、initPage、loadPosts等方法中添加更多调试日志 - 便于排查问题所在 ### v3.5.6 (2026-04-19) - 🐛 **Bug修复** - 继续修复移动端消息页面不显示消息列表的问题 - 在App.init方法中添加更多调试日志 - 在notifications API中添加服务器端调试日志 ### v3.5.5 (2026-04-19) - 🐛 **Bug修复** - 修复移动端消息页面不显示消息列表的问题 - 优化初始化逻辑,直接调用initPage,不等待checkLogin - 添加详细的调试日志,便于排查问题 - 改进checkLogin方法,确保Promise正确返回 ### v3.5.4 (2026-04-19) - 🐛 **Bug修复** - 修复移动端消息页面不显示消息列表的问题 - 改进`loadNotifications`方法的错误处理和调试信息 - 改进`renderNotificationItem`方法,处理可能的空值 - 添加空消息状态的显示 ### v3.5.3 (2026-04-19) - 🐛 **Bug修复** - 修复移动端热门页面无法加载数据的问题 - 修正SQL查询中LIMIT参数绑定问题 - 改进热门排序逻辑,按热度分数排序 ### v3.5.2 (2026-04-19) - 🐛 **Bug修复** - 修复移动端首页初始加载时列表为空的问题 - 优化初始化逻辑,确保用户登录状态检查完成后再加载数据 - 改进错误处理和空列表显示 ### v3.5.1 (2026-04-19) - 🐛 **Bug修复** - 修复移动端API路由无法正确加载的问题 - 在App.php中添加MobileApiController映射 - 修正JavaScript中的API调用路径 ### v3.5.0 (2026-04-19) - 🔄 **移动端全面重构** - 基于API的全新移动端架构,前后端完全分离 - 新增移动端专用API控制器(MobileApiController) - 提供完整的RESTful API接口支持 - 重写移动端JavaScript,使用纯API获取数据 - 全新的移动端UI设计,更现代化的界面 - 优化页面加载性能,减少服务器渲染压力 - 📱 **移动端功能完善** - 登录/注册功能 - 首页微博列表(全部/关注切换) - 热门微博页面 - 话题页面 - 微博详情页 - 发布微博(支持图片上传) - 评论功能 - 点赞/收藏功能 - 消息通知页面 - 个人中心页面 - 用户主页 - 关注/取消关注功能 - 图片预览功能 - 无限滚动加载 - 🎨 **UI优化** - 全新的移动端CSS样式 - 支持深色模式 - 优化触摸交互体验 - 加载状态提示 - Toast消息提示 ### v3.4.1 (2026-04-19) - 🐛 **Bug修复** - 修复电脑端发布微博后不能立刻在列表显示的问题 - 修正判断逻辑,使用 `Helper::isMobile()` 区分电脑端和移动端 - 电脑端发布成功后返回完整HTML,前端自动插入到列表顶部 ### v3.4.0 (2026-04-19) - 🐛 **Bug修复** - 修复移动端发布微博图片不显示的问题 - 修正JavaScript发送图片路径的格式,使用 `images[]` 数组格式 - 优化服务器端图片路径验证,添加 `is_string` 检查 - 使用 `array_values` 重建数组索引 ### v3.3.9 (2026-04-19) - 🐛 **Bug修复** - 修复移动端发布微博被重定向导致服务器返回错误的问题 - App::redirectMobile() 方法跳过 POST 请求,避免操作请求被重定向 - 解决移动端发送 POST 请求到电脑端接口时被重定向到移动端首页的问题 ### v3.3.8 (2026-04-19) - 🐛 **Bug修复** - 修复移动端"我的"页面500错误 - 修正getUserPosts返回数据结构,使用$postsData['items']获取帖子列表 - 解决foreach遍历非数组导致的错误 ### v3.3.7 (2026-04-19) - 🐛 **Bug修复** - 修复移动端发布微博提示"服务器返回错误"的问题 - PostController::publish检测AJAX请求,移动端返回简化JSON - 避免移动端处理电脑端HTML生成逻辑导致的错误 - 电脑端仍返回完整HTML保持原有功能 ### v3.3.6 (2026-04-19) - ✨ **UI优化** - 移动端发布微博页面右上角"发布"改为"返回"按钮 - 去掉发布按钮左侧重复的图片上传按钮 - 修复"添加图片"按钮点击无反应的问题 - 简化发布页面布局,更加清爽 ### v3.3.5 (2026-04-19) - ✨ **UI优化** - 重新设计移动端消息页面,采用卡片式布局 - 头像右下角添加消息类型图标(@、❤️、💬等) - 未读消息左侧显示蓝色边框标识 - 消息预览使用灰色背景卡片展示 - 优化整体配色和间距,更加清新简洁 - 添加深色模式适配 ### v3.3.4 (2026-04-19) - 🐛 **Bug修复** - 修复移动端消息页面头像和布局样式问题 - 统一头像尺寸为40x40像素 - 添加flex-shrink防止头像被压缩 - 优化消息项的整体布局显示 ### v3.3.3 (2026-04-19) - 🐛 **Bug修复** - 修复移动端发布微博提示网络错误的问题 - 改进JavaScript错误处理,添加详细的错误信息 - 修复MobileController图片上传的finfo兼容性问题 - 先检查文件扩展名,再验证MIME类型(如果finfo可用) - 添加HTTP状态码检查,更好地处理服务器错误 ### v3.3.2 (2026-04-19) - 🐛 **Bug修复** - 修复移动端发布微博时提示"网络错误"的问题 - 重构移动端图片上传逻辑:选择图片后立即上传到服务器 - 添加图片上传进度提示 - 发布时检查是否有图片正在上传中 - PostController支持接收已上传图片的路径 ### v3.3.1 (2026-04-19) - 🐛 **Bug修复** - 修复移动端消息页面@提醒的显示样式 - @用户名整体显示为超链接,而不是仅@符号有样式 - 点击@用户名可跳转到用户主页 ### v3.3.0 (2026-04-19) - ✨ **功能优化** - 移动端消息页面点击"全部已读"不再弹出确认对话框,直接执行操作 - 提升用户体验,操作更加流畅 ### v3.2.9 (2026-04-19) - 🐛 **Bug修复** - 修复移动端内容二次转义导致HTML标签显示为文本的问题 - 重构内容解析逻辑:Model层只返回原始内容,Controller层负责解析 - 电脑端和移动端分别调用 Helper::parseContent() 进行内容解析 - 避免Model层和Controller层重复解析导致HTML被转义 ### v3.2.8 (2026-04-19) - 🐛 **Bug修复** - 修复PostModel中内容二次转义导致HTML标签显示为文本的问题 - 统一使用 Helper::parseContent() 方法解析内容 - 移除 formatPosts() 和 getOriginalPost() 中的手动转义和正则替换 - 确保电脑端和移动端内容解析逻辑一致 ### v3.2.7 (2026-04-19) - 🐛 **Bug修复** - 彻底重写 parseContent() 方法,使用位置索引分词机制 - 先找出所有特殊内容的位置,按顺序拼接结果 - 普通文本转义,特殊内容直接生成HTML链接 - 避免占位符替换机制的各种问题 ### v3.2.6 (2026-04-19) - 🐛 **Bug修复** - 修复 parseContent() 正则表达式捕获组逻辑错误导致内容不解析的问题 - 改用三个独立的正则分别处理 URL、话题、@用户 - 确保每种内容类型都能正确匹配和替换 ### v3.2.5 (2026-04-19) - 🐛 **Bug修复** - 修复移动端消息页面点击消息后未标记为已读的问题 - 新增消息页面"全部标记为已读"功能 - 点击消息时自动调用 markAsRead 接口更新已读状态 - 已读后实时更新底部导航栏未读数量徽章 ### v3.2.4 (2026-04-19) - 🐛 **Bug修复** - 彻底重写 parseContent() 使用 preg_replace_callback 分词机制 - 一次性匹配 URL、话题、@用户,使用不可见字符作为 token - 只对普通文本进行转义,确保 HTML 链接正确渲染 - 修复 @用户链接无法解析的问题 ### v3.2.3 (2026-04-19) - 🐛 **Bug修复** - 彻底修复移动端超链接、话题、@用户解析问题 - 重构 parseContent() 使用更可靠的占位符机制 - 所有特殊内容(URL、话题、@用户)先提取占位,转义后再替换 ### v3.2.2 (2026-04-19) - 🐛 **Bug修复** - 修复移动端超链接被双重转义显示为文本的问题 - 使用占位符机制重构 parseContent() 方法,确保链接正确渲染 ### v3.2.1 (2026-04-19) - 🐛 **Bug修复** - 修复移动端表情解析问题 - 修复移动端超链接解析问题 - 新增 `Helper::parseContent()` 统一内容解析方法 - 简化移动端模板代码,内容解析统一在控制器处理 ### v3.2.0 (2026-04-19) - 📱 **移动端自动跳转** - 新增移动端设备自动检测功能 - 移动端访问自动跳转到移动端界面 - 支持用户手动切换电脑版/移动版 - 记住用户版本偏好(Cookie存储) - 排除API、后台管理等路径的跳转 ### v3.1.1 (2026-04-19) - 🐛 **Bug修复** - 修复移动端注册未考虑邮箱验证和邀请码的问题 - 移动端注册现已完整支持邮箱验证码、邀请码、邮箱后缀限制等功能 ### v3.1.0 (2026-04-19) - 📱 **移动端界面** - 新增独立移动端主题(templates/mobile) - 底部Tab导航栏设计,类似主流社交应用 - 支持登录、注册功能 - 支持微博浏览、点赞、收藏、评论 - 支持发布微博(文字+图片) - 支持查看微博详情和评论列表 - 支持个人中心页面 - 支持消息通知页面 - 支持热门微博页面 - 支持话题页面 - 支持用户主页 - 支持深色模式 - 访问方式:/?r=mobile ### v3.0.2 (2026-04-19) - 🐛 **Bug修复** - 修复用户被@时收不到消息提醒的问题 - 移除代码中不存在的nickname字段引用,统一使用username ### v3.0.1 (2026-04-19) - 🐛 **Bug修复** - 修复用户微博被其他用户点赞时收不到消息提醒的问题 - 修复用户微博被其他用户收藏时收不到消息提醒的问题 - 增强通知发送的可靠性和错误日志记录 - 添加通知发送失败的详细调试信息 ### v3.0.0 (2026-04-19) - 🏗️ **架构重构** - 核心类添加命名空间支持(PSR-4规范) - 实现Repository模式,抽象Model层 - 控制器功能模块化(Traits拆分) - 📦 **新增组件** - RepositoryInterface 接口定义数据仓库标准操作 - LoggerInterface 接口定义日志记录标准 - BaseRepository 抽象类实现通用数据操作 - PostRepository 处理帖子相关数据操作 - UserRepository 处理用户相关数据操作 - PostPublishTrait 帖子发布相关功能 - PostInteractionTrait 帖子互动相关功能 - PostListTrait 帖子列表相关功能 - 🔧 **自动加载优化** - 支持PSR-4命名空间自动加载 - 保持向后兼容,原有类名仍可使用 - 🧪 **测试增强** - 新增Repository模式测试用例 - 新增命名空间自动加载测试 - 新增代码规范测试 - 📝 **代码规范** - 完善所有新文件的注释文档 - 统一代码风格 ### v2.9.3 (2026-04-18) - 🐛 **Bug修复** - 修复点赞通知发送逻辑,将条件判断移到try块外 - 修复收藏通知发送逻辑 - 添加通知发送失败的日志记录,便于调试 ### v2.9.2 (2026-04-18) - 🐛 **Bug修复** - 修复微博发布时@提醒不发送通知的问题 - 使用Helper::extractMentions方法统一@用户提取逻辑 - ✨ **功能增强** - 新增收藏通知功能,微博被收藏时发送通知 - 通知列表增加收藏类型图标和样式 ### v2.9.1 (2026-04-18) - 🐛 **Bug修复** - 修复微博发布时@提醒不发送通知的问题 - 修复评论@提醒未正确传递评论ID的问题 - ✨ **功能增强** - 转发微博时也支持@提醒功能 ### v2.9.0 (2026-04-18) - ✨ **功能增强** - 消息系统增加@提醒功能 - 用户被@时收到对应的通知提醒 - 区分"在动态中提到你"和"在评论中提到你" - @提醒通知包含评论ID,点击可跳转到对应评论 - 🎨 **界面优化** - 通知列表根据类型显示不同的图标和样式 - @提醒通知显示特殊的@徽章 - 不同类型通知左侧显示不同颜色边框 ### v2.8.4 (2026-04-18) - 🐛 **Bug修复** - 修复评论@用户功能不被解析的问题 - parseMentions方法现在支持HTML实体@符号 - 评论内容经过htmlspecialchars转义后@符号变为@,导致正则无法匹配 ### v2.8.3 (2026-04-18) - 🐛 **Bug修复** - 修复服务器上传更新包失败的问题 - 增强上传错误提示,显示具体错误原因 - 自动检测服务器上传大小限制 - 兼容服务器未启用fileinfo扩展的情况 - 增加临时目录权限检查和自动修复 - ✨ **功能增强** - 前端上传前检测文件大小是否符合服务器限制 - 增加上传超时处理(5分钟) - 增加HTTP错误状态码详细提示(413/500等) - 上传成功后显示文件大小 ### v2.8.2 (2026-04-18) - 🐛 **Bug修复** - 修复系统更新时文件权限问题 - 复制文件前检查并处理只读文件 - 复制后自动设置正确的文件权限(0644) - 增强错误处理,提供更清晰的错误提示 ### v2.8.1 (2026-04-18) - ✨ **功能增强** - 后台仪表盘新增版本更新提醒 - 检测到新版本时显示醒目的更新提示徽章 - 点击更新提醒可直接跳转到系统更新页面 - 版本检测缓存机制(1小时),避免频繁请求API ### v2.8.0 (2026-04-18) - 🎨 **主题管理系统** - 新增后台主题管理功能 - 支持多主题切换 - 支持自定义主题开发 - 主题配置文件格式(theme.json) - 主题预览图支持(screenshot.png) - 主题详情查看 - 🔧 **View类增强** - 支持主题动态切换 - 模板文件回退机制(自定义主题可继承默认主题) - 新增 `themeAsset()` 和 `themeUrl()` 方法 - 📝 **开发文档** - 主题开发指南 - 主题配置文件规范 ### v2.7.2 (2026-04-17) - 🐛 **Bug修复** - 修复微博编辑功能无效的问题 - 修复编辑表单缺少CSRF Token的问题 - 修复后台更新系统ZIP上传失败的问题 - 确保CSRF Token在使用前正确生成 - 编辑功能兼容数据库字段不存在的情况 ### v2.7.1 (2026-04-17) - 🐛 **Bug修复** - 修复微博编辑功能无效的问题 - posts表添加缺失的 `edit_count` 和 `edited_at` 字段 - 数据库自动迁移添加编辑相关字段 ### v2.7.0 (2026-04-17) - 🚀 **RESTful API接口** - 新增API控制器基类,支持Token认证 - 支持RESTful风格路由(GET/POST/PUT/DELETE) - 实现用户认证、动态、评论、用户等核心API - 支持请求速率限制 - 支持Bearer Token和X-API-Token两种认证方式 - ⚡ **异步任务队列系统** - 新增Queue类,支持异步任务处理 - 支持延迟执行、优先级、失败重试 - 内置邮件发送、通知推送、Webhook任务处理器 - 提供命令行队列处理脚本(queue.php) - 📧 **邮件异步发送** - Mailer类新增queue()和queueTemplate()方法 - 邮件发送改为异步队列,提升响应速度 - 支持延迟发送 - 🧪 **单元测试增强** - 扩展测试框架,新增Queue、Hook、View、Security等测试 - 增加更多边界情况测试用例 - 🎨 **前端优化** - 新增HuSNS前端优化模块(husns.js) - 图片懒加载,提升页面加载速度 - 无限滚动加载,优化浏览体验 - 网络状态检测,离线提示 - 性能优化(图片解码、预连接) - 无障碍访问增强 - 📦 **数据库更新** - 新增api_tokens表(API Token管理) - 新增queue_jobs表(异步任务队列) ### v2.6.1 (2026-04-17) - 🐛 **Bug修复** - 修复注册功能500错误(PHP 8.2兼容性问题) - 修复个人中心页面500错误 - 修复消息通知页面500错误 - 🔧 **系统优化** - 优化Helper::post()方法,默认返回空字符串避免null问题 - 优化消息通知模板数据处理逻辑 ### v2.6.0 (2026-04-17) - 😊 **表情功能增强** - 表情图标本地化,下载345个新浪微博表情到本地 - 修复表情发布后不立即解析的问题 - 修复表情弹窗位置显示在上方的问题 - 表情面板支持评论/回复跳转定位 - 🔔 **消息通知优化** - 新增查看详情链接,点击跳转到对应微博或评论 - 点击查看详情自动标记消息为已读 - 评论/回复定位高亮显示 - 🔄 **备份系统优化** - 备份仅包含数据库和代码文件 - 排除logs和uploads目录,减小备份体积 - 优化备份管理界面布局 - 🐛 **Bug修复** - 修复注册用户500错误(session重复启动) - 修复数据库迁移字段缺失问题 - 修复游客访问时注册按钮跳转问题 - 修复发布框下方图标间距过大问题 - 🔧 **系统优化** - 完善数据库自动迁移机制 - 优化会话安全配置 - 创建日志目录自动初始化 ### v2.5.0 (2026-04-17) - 😊 **表情功能** - 新增微博发布表情功能 - 支持新浪微博表情包(60+表情) - 支持Emoji表情(70+常用Emoji) - 表情面板支持分类切换(默认/热门/Emoji) - 微博内容自动解析显示表情图片 ### v2.4.0 (2026-04-17) - 🔄 **在线更新系统** - 新增后台在线检测版本更新功能 - 支持从Gitee获取最新版本信息 - 支持上传ZIP更新包进行本地更新 - 新增系统备份功能(数据库+文件) - 支持一键恢复到升级前版本 - 提供最新版本下载页面链接 - 完善的安全验证机制 - 更新前自动备份选项 ### v2.3.2 (2026-04-17) - 🖼️ **图片预览增强** - 新增图片轮播功能,支持左右切换查看多张图片 - 支持键盘快捷键:左右箭头切换图片,ESC关闭预览 - 显示图片计数器(如 1/5) - 优化预览界面交互体验 ### v2.3.1 (2026-04-16) - 🐛 **修复热门话题显示问题** - 修复置顶话题的微博数量始终显示为0的问题 - 热门话题现在正确显示该话题下的微博数量 - 优化话题数据统计逻辑 ### v2.3.0 (2026-04-16) - 🖼️ **图片显示优化** - 全新智能图片网格布局,根据图片数量自动调整显示方式 - 统一所有页面的图片显示样式(首页、热门、个人主页、收藏、精华、话题) - 图片缩略图统一尺寸,提升视觉体验 - 响应式设计,完美适配移动端 - 支持暗黑模式 - 🐛 **修复图片上传问题** - 修复逐张上传图片时预览区域只显示最后一张的问题 - 优化图片上传事件处理逻辑 ### v2.2.6 (2026-04-16) - 🐛 **修复图片上传问题** - 修复逐张上传图片时预览区域只显示最后一张的问题 - 删除 app.js 中重复的图片上传事件监听器 - 现在无论是一次多选还是逐张上传,预览区域都能正确累积显示 ### v2.2.5 (2026-04-16) - 🖼️ **完善图片网格布局** - 统一所有页面的图片显示方式(热门、个人主页、收藏、精华、话题) - 所有图片显示页面均采用智能网格布局 - 图片自动按数量调整行列布局 - 统一缩略图尺寸,提升视觉体验 ### v2.2.4 (2026-04-16) - 🖼️ **优化图片显示体验** - 图片自动按网格布局显示,统一尺寸缩略图 - 智能布局算法:根据图片数量自动调整行列 - 1张图:单张大图展示 - 2张图:一行2张 - 3张图:一行3张 - 4张图:2行各2张 - 5张图:第一行3张,第二行2张 - 6张图:2行各3张 - 以此类推,最多每行3张 - 响应式设计,移动端完美适配 - 支持暗黑模式 - 📝 添加图片布局计算函数和渲染函数 ### v2.2.3 (2026-04-16) - 🔒 **安全更新** - 修复多项安全漏洞 - 修复IP欺骗漏洞,添加可信代理验证 - 修复SQL注入风险,使用预处理语句 - 修复会话固定攻击风险,登录后重新生成会话ID - 增强XSS过滤,移除更多危险标签和属性 - 修复文件上传目录权限(0777→0755) - 增强附件MIME类型验证 - 添加会话安全配置(HttpOnly、SameSite等) - 添加安全响应头(X-Frame-Options、X-XSS-Protection等) - 修复Cookie安全标志(Secure、SameSite) - 📝 完善安全相关代码注释 ### v2.2.2 (2026-04-16) - 🖼️ 优化用户头像存储逻辑,每个用户只保留一个头像文件 - 🖼️ 优化用户头像显示,文件不存在时自动显示首字符头像 - 🎨 首字符头像支持16种渐变配色,根据用户名自动分配 - 🔧 头像上传时自动删除旧头像文件,节省存储空间 - 📝 完善头像相关代码注释 ### v2.2.0 (2026-04-16) - ✨ 新增依赖注入容器(Container),降低类之间耦合度 - ✨ 新增日志系统(Logger),支持多级别日志记录 - ✨ 新增异常处理器(ExceptionHandler),统一异常处理 - ✨ 新增单元测试框架,支持基础测试用例 - ✨ 新增系统日志表(system_logs) - 🔧 重构Controller基类,使用依赖注入获取服务 - 📝 完善代码注释,提高代码可读性 - 🐛 修复若干已知问题 ### v2.1.0 - 新增收藏功能 - 优化帖子详情页展示 - 修复后台管理若干问题 ### v2.0.0 - 全新MVC架构重构 - 新增插件系统 - 新增积分系统 - 优化前端UI ### v1.16.0 - 新增后台用户名长度设置功能 - 优化话题页面发布框光标定位 - 修复后台设置保存问题 更多历史版本请查看 [Releases](https://gitee.com/huyourui/husns/releases)。 --- 感谢使用 HuSNS!如果觉得不错,欢迎 ⭐ Star 支持!