一个基于 Web 的匿名社交漂流瓶系统,让用户可以自由地扔出或捡起漂流瓶,分享心情,寻找共鸣。
漂流瓶系统是一个轻量级的社交平台,旨在为用户提供一个安全、匿名的空间来分享内心感受、结交新朋友。它借鉴了“漂流瓶”这一经典概念,将用户的想法和情感以数字化的形式投入互联网的海洋,等待有缘人发现。
系统设计简洁直观,注重用户体验与互动性,同时将用户隐私和数据安全放在首位。无论您是想倾诉心事、寻求建议,还是仅仅想与陌生人分享一个有趣的想法,漂流瓶系统都能满足您的需求。
- 注册与登录:快速创建账户,安全登录。
- 个人资料:管理个人信息,设置个性签名。
- 漂流瓶操作:
- 扔瓶子:写下心情或想法,投入大海。
- 捡瓶子:随机捡起他人的漂流瓶。
- 互动:评论、点赞漂流瓶。
- 记录:查看自己扔出和捡到的瓶子。
- 性别标识:男性漂流瓶 (蓝色 🔵),女性漂流瓶 (粉色 🌸)。
- 匿名选项:可选择匿名发送,保护隐私。
- VIP 会员:购买 VIP 享受更多特权(如:更多扔/捡瓶次数、专属标识)。
- 签到系统:每日签到获取积分,连续签到有额外奖励。
- 积分系统:通过多种方式赚取积分,兑换系统特权。
- IP 保护:VIP 用户 IP 地址完全隐藏,普通用户部分隐藏。
- 消息中心:接收系统通知和互动消息。
- 防 XSS 攻击:严格的输入过滤和内容安全策略 (CSP)。
- 防 SQL 注入:使用参数化查询和输入验证。
- 防 CSRF 攻击:实施 CSRF 令牌验证。
- 会话安全:防止会话固定攻击。
- 数据验证:前后端双重数据校验。
- 用户管理:查看、封禁/解封用户,重置密码。
- 内容管理:管理漂流瓶、评论,发布公告。
- 系统设置:配置基础参数、积分规则、VIP 特权、安全策略。
- 数据统计:监控用户活跃度、漂流瓶数据、系统运行状态。
| 类型 | 技术 |
|---|---|
| 前端 | HTML, CSS, JavaScript |
| 后端 | PHP 7.3+ |
| 数据库 | MySQL 5.6+ |
| Web 服务器 | Apache/Nginx |
系统主要数据表如下:
| 表名 | 描述 |
|---|---|
users |
用户信息 |
bottles |
漂流瓶内容 |
comments |
评论数据 |
likes |
点赞记录 |
pick_records |
捡瓶记录 |
checkins |
签到记录 |
points_history |
积分历史 |
announcements |
系统公告 |
admin_roles |
管理员角色 |
admins |
管理员账号 |
admin_login_logs |
管理员登录日志 |
admin_operation_logs |
管理员操作日志 |
daily_limits |
用户每日限制 |
messages |
消息中心 |
system_settings |
系统配置 |
- PHP: 7.3 或更高版本 (推荐 7.4 / 8.0)
- MySQL: 5.6 或更高版本 / MariaDB 10.3+
- Web 服务器: Apache 2.4+ / Nginx 1.18+
- PHP 扩展:
mysqli,mbstring,json
-
获取代码
# 克隆仓库 git clone https://github.com/kggzs/Driftbottle.git /path/to/web/driftbottle # 或者下载 ZIP 包解压
-
配置 Web 服务器
- 将网站根目录指向
/path/to/web/driftbottle。 - (可选) 配置 URL 重写规则(如果需要伪静态,但当前版本已不推荐)。
- 将网站根目录指向
-
数据库设置
- 创建数据库和用户:
CREATE DATABASE driftbottle CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'driftbottle_user'@'localhost' IDENTIFIED BY 'your_secure_password'; GRANT ALL PRIVILEGES ON driftbottle.* TO 'driftbottle_user'@'localhost'; FLUSH PRIVILEGES;
- 导入数据库结构:
mysql -u driftbottle_user -p driftbottle < driftbottle.sql - 配置数据库连接:
- 编辑
includes/config.php文件,修改以下常量:define('DB_HOST', 'localhost'); define('DB_USER', 'driftbottle_user'); define('DB_PASS', 'your_secure_password'); define('DB_NAME', 'driftbottle');
- 编辑
- 创建数据库和用户:
-
设置目录权限
- 确保 Web 服务器用户对以下目录有写入权限:
# 根据您的服务器环境调整命令 chmod -R 755 /path/to/web/driftbottle chmod -R 777 /path/to/web/driftbottle/assets/images/uploads # 如果有上传功能 chmod -R 777 /path/to/web/driftbottle/logs
- 确保 Web 服务器用户对以下目录有写入权限:
-
IP 地址库配置 (可选)
- 如需显示 IP 归属地,下载纯真 IP 数据库
qqwry.dat。 - 将
qqwry.dat文件放入ip/或includes/ip/目录(请根据ip_location.php中的实际路径确认)。
- 如需显示 IP 归属地,下载纯真 IP 数据库
-
访问测试
- 打开浏览器访问您的网站地址。
- 默认管理员账号:
admin/admin - 重要: 首次登录后请务必修改管理员密码!
- 安全提示:
admin/test_admin.php和admin/reset_password.php是密码重置工具,生产环境请务必删除!
- 项目包含一些用于更新早期数据库结构的 SQL 脚本(位于
sql/目录或根目录)。 - 如果您是从旧版本升级,请按需执行这些脚本:
mysql -u driftbottle_user -p driftbottle < sql/update_script_name.sql - 主要更新脚本包括:
update_user_status.sql: 添加用户封禁状态。update_admin_roles.sql: 更新管理员角色权限。system_settings.sql: 初始化或更新系统设置。vip_points_settings.sql: VIP 和积分相关配置。update_announcements.sql: 公告系统相关更新。
-
页面显示空白或 500 错误?
- 检查 PHP 错误日志 (
logs/php_errors.log或服务器配置的日志路径)。 - 确认 PHP 版本和所需扩展已安装并启用。
- 检查文件和目录权限。
- 检查 PHP 错误日志 (
-
无法连接数据库?
- 仔细核对
includes/config.php中的数据库连接信息。 - 确保 MySQL 服务正在运行。
- 检查数据库用户权限是否正确授予。
- 仔细核对
-
图片上传失败?
- 检查
assets/images/uploads(或实际上传目录) 是否存在且具有写入权限。 - 检查 PHP 配置中的
upload_max_filesize和post_max_size限制。
- 检查
-
IP 地址归属地显示不正确?
- 确认
qqwry.dat文件存在于正确路径且文件完整。 - 纯真 IP 库需要定期更新。
- 确认
-
API 调用失败或无响应?
- 确认 API 请求格式为
api.php?action=your_action。 - 打开浏览器开发者工具 (F12),检查“网络 (Network)”和“控制台 (Console)”选项卡是否有错误信息。
- 检查服务器端的 PHP 或 Web 服务器错误日志。
- 尝试清除浏览器缓存。
- 确认 API 请求格式为
系统 API 通过 api.php 文件提供服务,使用 action GET 参数指定调用的端点。
调用格式:
GET /api.php?action=endpoint_name¶m1=value1&...
POST /api.php?action=endpoint_name (with POST data)
主要端点示例:
check_auth: 检查登录状态login: 用户登录register: 用户注册logout: 用户登出create_bottle: 创建漂流瓶pick_bottle: 捡起漂流瓶comment_bottle: 评论漂流瓶like_bottle: 点赞漂流瓶user_bottles: 获取用户扔出的瓶子user_picked_bottles: 获取用户捡到的瓶子get_announcements: 获取系统公告get_basic_settings: 获取系统基本配置- ... (更多接口请参考
api.php源码)
driftbottle/
├── admin/ # 管理员后台模块
│ ├── includes/ # 后台公共文件 (header, footer)
│ ├── *.php # 各管理页面 (用户、瓶子、评论等)
│ └── ...
├── assets/ # 静态资源 (CSS, JS, Images, Fonts)
│ ├── css/
│ ├── js/
│ │ ├── app.js # 主要前端逻辑
│ │ └── utils.js # 工具函数
│ ├── images/
│ └── fonts/
├── includes/ # 后端核心类库和配置文件
│ ├── config.php # 数据库和系统配置
│ ├── user.php # 用户类
│ ├── bottle.php # 漂流瓶类
│ ├── security.php # 安全处理类
│ ├── validator.php # 数据验证类
│ ├── ip_location.php # IP 定位类
│ ├── admin.php # 管理员类
│ └── ip/ # IP 数据库存放目录
├── ip/ # (可能冗余) IP 数据库目录
├── logs/ # 日志文件目录
├── sql/ # SQL 脚本目录
├── api.php # API 入口文件
├── index.html # 前台首页
├── login.html # 登录页
├── register.html # 注册页
├── profile.html # 个人资料页
├── throw.html # 扔瓶子页
├── pick.html # 捡瓶子页
├── driftbottle.sql # 完整数据库结构
├── .htaccess # Apache 配置文件 (伪静态已停用)
├── nginx.htaccess # Nginx 配置文件 (伪静态已停用)
├── CHANGELOG.md # 版本更新日志
├── LICENSE # 开源许可证
└── README.md # 本文档
- v1.0.2 (2025-04-21): 弃用伪静态 URL 格式,改为
?action=参数;优化前端错误处理。 - v1.0.1 (2025-04-20): 增强安全措施;增加 VIP 会员和签到系统。
- v1.0.0 (初始版本): 实现基础的漂流瓶扔/捡、评论、点赞功能。
详细更新内容请查阅 文件。
- 漂流瓶内容分类/标签系统
- 用户间私信功能
- 漂流瓶收藏夹
- 更丰富的用户个性化设置
- 用户等级与成就系统
- 移动端适配或 App 开发
本项目基于 MIT 许可证 开源。详情请见 文件。
- 定期备份: 定期备份数据库和重要文件。
- 强密码: 使用复杂且唯一的数据库密码和管理员密码,并定期更换。
- HTTPS: 部署 SSL 证书,启用 HTTPS 加密传输。
- 删除安装/调试文件: 生产环境中务必删除
admin/test_admin.php,admin/reset_password.php等调试或密码重置工具。 - 更新依赖: 保持 PHP、MySQL、Web 服务器等软件为最新稳定版本。
- 安全审计: 定期审查代码和服务器配置,关注安全漏洞。
- 日志监控: 定期检查
logs/目录下的日志文件,监控异常活动。 - CSP 策略: 根据需要调整
includes/security.php中的内容安全策略 (CSP)。
- QQ: 1724464998
- GitHub Issues: https://github.com/kggzs/Driftbottle/issues
以下为系统部分界面截图:



