# 彩虹外链网盘（二开美化版）

一款基于 PHP 的网盘与外链分享程序，上传文件即生成直链，可以当网盘用，也可以当图床、音视频外链站用。本项目在原开源版基础上做了二次开发，扩展了用户体系、付费权限、内容检测、邮件通知，并把前后台界面整体重做了一遍。

- 项目地址：<https://github.com/hefollo/pan>
- 原开源项目：<https://github.com/netcccyun/pan>

![数据控制台风](https://raw.githubusercontent.com/hefollo/pan/main/img/%E6%95%B0%E6%8D%AE%E6%8E%A7%E5%88%B6%E5%8F%B0%E9%A3%8E.png)
![渐变仪表盘风](https://raw.githubusercontent.com/hefollo/pan/main/img/%E6%B8%90%E5%8F%98%E4%BB%AA%E8%A1%A8%E7%9B%98%E9%A3%8E.png)
![深色工作台风](https://raw.githubusercontent.com/hefollo/pan/main/img/%E6%B7%B1%E8%89%B2%E5%B7%A5%E4%BD%9C%E5%8F%B0%E9%A3%8E.png)

## 目录

- [文件与外链](#文件与外链)
- [访问链接机制](#访问链接机制)
- [用户与登录](#用户与登录)
- [个人中心](#个人中心)
- [付费权限](#付费权限)
- [内容检测](#内容检测图片同步--视频抽帧)
- [违规文件公示](#违规文件公示)
- [覆盖记录审计](#覆盖记录审计)
- [上传限制](#上传限制)
- [28 套外观](#28-套外观前后台联动)
- [云存储支持](#云存储支持)
- [邮件发信](#邮件发信)
- [赞助页](#赞助页)
- [后台总览](#后台总览)
- [环境要求与安装](#环境要求与安装)

## 文件与外链

支持所有常见格式，可多选批量上传、Ctrl+V 粘贴上传、拖拽上传。上传后同时给出直链、UBB 代码和 HTML 代码，图片、音乐、视频、文本都能在线预览。

- 上传时可以设置访问密码，也可以决定这个文件是否出现在首页的公开列表里
- 文件列表支持关键字搜索、按类型筛选，加密文件带锁形标记
- **覆盖上传**：用新文件替换旧文件而外链地址保持不变，适合经常更新的素材
- **在线编辑**：`txt`、`md`、`json`、`js`、`css`、`html`、`xml`、`yaml`、`sql`、`vue`、`ts` 等文本格式可以直接在网页里改
- 可以当网盘用，也可以当图床或音乐在线试听站用

## 访问链接机制

文件的对外链接使用独立的随机 token，这一点和很多同类程序不同：

- 同一份内容被多人上传时，每个人得到**独立的记录和独立的链接**，各自的文件名、密码、隐藏设置互不影响，而物理文件仍然只存一份，不浪费空间
- 覆盖上传和在线编辑只改变当前这一条记录指向的内容，不会连带改掉别人的文件
- 删除文件时，只有当没有任何记录再引用这份内容，才会真正清理物理文件

下载域名、协议、跳转方式都能在后台单独配置，可以把直链挂到 CDN 域名上。

## 用户与登录

QQ / 微信快捷登录，或者邮箱注册（填邮箱 → 收 6 位验证码 → 设密码），两种方式可以并存，登录页会自动显示可用的入口。获取验证码前要算一道简单算术题，可在后台关掉。

![登录界面](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E7%99%BB%E5%BD%95%E7%95%8C%E9%9D%A2.png)
![注册界面](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E6%B3%A8%E5%86%8C%E7%95%8C%E9%9D%A2.png)

**一个账号多种登录方式**：邮箱注册的账号可以绑 QQ / 微信，QQ / 微信登录的账号可以绑邮箱并设密码，绑完两种方式都能进同一个账号。注册时用的那种方式是主身份不可解绑，所以账号任何时候都至少留着一个能登进来的入口。改密码或绑邮箱后，其它设备上的登录状态会立即失效，当前设备保持登录。

后台「用户管理」可以区分普通 / 高级用户，给每个人单独设置每日上传数量、单文件大小和权限有效期，也能封禁、解封、查看某个用户的全部文件或删除账号。

![用户管理](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86.png)

## 个人中心

登录用户有独立的个人中心，四个页签：

![个人中心-概览](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E4%B8%AA%E4%BA%BA%E4%B8%AD%E5%BF%83-%E6%A6%82%E8%A7%88.png)

**概览** —— 文件数、占用空间、今日上传 / 上限、单文件上限四张数字卡，下面是当前套餐、每日上传（含加量包）、单文件大小、有效期，以及自己文件的类型分布条。

![个人中心-我的文件](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E4%B8%AA%E4%BA%BA%E4%B8%AD%E5%BF%83-%E6%88%91%E7%9A%84%E6%96%87%E4%BB%B6.png)

**我的文件** —— 按文件名搜索、按类型筛选，可重命名、设置或取消访问密码、切换公开 / 私密、复制外链、单个与批量删除。

> 「私密」只是不在首页公共列表里出现，外链本身照样能打开；真要限制访问得给文件设访问密码。这一点页面上也写着，避免误解。

![个人中心-订单记录](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E4%B8%AA%E4%BA%BA%E4%B8%AD%E5%BF%83-%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.png)

**订单记录** —— 自己的订单号、套餐、金额、支付方式、状态、下单与支付时间。打开页面时会顺手补查一次当面付的漏单。

![个人中心-账号设置](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%89%8D%E7%AB%AF%E6%88%AA%E5%9B%BE/%E4%B8%AA%E4%BA%BA%E4%B8%AD%E5%BF%83-%E8%B4%A6%E5%8F%B7%E8%AE%BE%E7%BD%AE.png)

**账号设置** —— 账号资料、修改昵称、登录方式绑定、修改或设置密码。

## 付费权限

把上传额度做成套餐卖给用户，付款成功后权限立即生效，全程不需要人工介入。

![buy-page](https://raw.githubusercontent.com/hefollo/pan/main/img/buy-page.png)

**支付方式**：支付宝当面付（页面内扫码付）和易支付（跳转收银台）两种，可以只开一种，也可以同时开着让用户自己选。

![admin-pay-setting](https://raw.githubusercontent.com/hefollo/pan/main/img/admin-pay-setting.png)

**套餐**支持三种玩法：

- **包月卡**——按时长售卖，续费时有效期叠加
- **加量包**——在现有额度基础上叠加，买的额度单独记账，后面再买月卡也不会被覆盖掉
- **永久会员**——一次买断；已是永久权限的用户再买限时套餐只会取更优值，不会被降级

![admin-plan-list](https://raw.githubusercontent.com/hefollo/pan/main/img/admin-plan-list.png)
![购买套餐设置1](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E8%B4%AD%E4%B9%B0%E5%A5%97%E9%A4%90%E8%AE%BE%E7%BD%AE1.png)
![购买套餐设置2](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E8%B4%AD%E4%B9%B0%E5%A5%97%E9%A4%90%E8%AE%BE%E7%BD%AE2.png)

**订单记录**可以按状态筛选、查看累计金额，每笔订单都能查询支付状态、补发权限或关闭，另有「清理未支付订单」一键清废单。当面付没有异步通知，程序会在打开购买页和下单时自动补查漏单。

![订单记录](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.png)

## 内容检测：图片同步 + 视频抽帧

三种引擎可选：阿里云内容安全、腾讯云内容安全，或者**自建服务在自己机器上跑模型**——不产生调用费、文件也不出服务器。

![内容检测设置](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%86%85%E5%AE%B9%E6%A3%80%E6%B5%8B%E8%AE%BE%E7%BD%AE.png)

**图片**是同步检测，超过阈值直接拦下。**视频**走异步：ffmpeg 按间隔抽帧逐帧判分，上传先挂起、检测完再自动放行或封禁，不卡上传流程。

评分介于「转人工」和「直接封禁」两个阈值之间的会标成**待审核**（前台下载不了），等人工确认。文件状态是三态可切换的（正常 / 封禁 / 待审核），文件管理和检测记录页都能就地改。

![内容检测记录](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%86%85%E5%AE%B9%E6%A3%80%E6%B5%8B%E8%AE%B0%E5%BD%95.png)

检测记录能看到每个文件命中了哪几帧、最高分出现在第几秒，还留了证据帧。检测服务没起来或超时的时候一律放行，不会因为它挂了就让用户传不了图。

## 违规文件公示

面向合规场景，把已封禁文件的处理情况对外公开，前台入口在导航栏「违规公示」。

- 后台封禁文件会自动生成公示记录，解封自动撤下，批量操作同样生效
- 后台可查看全部记录、改文件名与备注、单条开关是否公示、手动补录或删除，也支持一键导入历史已封禁文件
- 公示页只输出**脱敏信息**：文件名打码、IP 只显示前两段，不输出文件哈希、下载链接或任何可访问地址
- 开启内容检测时，机器自动命中封禁的文件会留档但**默认不公示**，需人工确认后再放出
- 整个功能可以在后台关掉，公示页顶部的说明文字也能自定义

## 覆盖记录审计

覆盖上传和在线编辑都会改变已有链接背后的内容——有人可能先传正常文件、事后偷偷换成违规内容，所以这类操作单独留一份审计。

![覆盖记录](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E8%A6%86%E7%9B%96%E8%AE%B0%E5%BD%95.png)

- 记录覆盖前后的文件名、大小、格式，图片可以直接预览新内容
- 记录操作者 UID / IP、时间和方式（覆盖上传 / 在线编辑）
- 显示该文件当前状态（正常 / 待审 / 已封禁 / 已删除）
- 每条记录可直接查看、封禁、删除文件、标记已复查或删除记录
- 默认只显示未复查的条目，顶部提示积压数量，支持一键全部标记已复查

## 上传限制

后台「文件上传设置」可以配置全站每日上传数量、单文件大小上限、每分钟上传次数，以及允许 / 禁止的文件类型和文件名关键词过滤。登录用户按账号统计，游客按来源地址统计。

![用户IP地址获取设置](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E7%94%A8%E6%88%B7IP%E5%9C%B0%E5%9D%80%E8%8E%B7%E5%8F%96%E8%AE%BE%E7%BD%AE.png)

站点如果套了 Cloudflare 或其它反向代理，需要在「用户IP地址设置」里选对真实 IP 的获取方式——页面上会直接显示每种方式当前取到的地址，对照着选就行，不用猜。

## 28 套外观，前后台联动

后台一处切换，前台页面、后台管理界面、顶部公告条、友链广告位、赞助页和各类弹窗全部跟着变。

![外观设置](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%A4%96%E8%A7%82%E8%AE%BE%E7%BD%AE.png)

外观分两类。**布局型**（13 套）连页面结构一起改：

| 外观 | 特点 | 后台 |
| --- | --- | --- |
| 控制台侧栏风 | 顶部导航变左侧固定侧栏，内容区圆角卡片 | 同步改为侧栏 |
| 数据控制台风 | 更紧凑的侧栏，列表上方加统计卡与类型筛选 | 同步改为侧栏 |
| 上传门户风 | 居中门户式导航，首页大号上传引导区，列表改卡片网格 | 只换配色 |
| 深色工作台风 | 深色底 + 图标导航条，右侧常驻文件预览面板 | 同步改为侧栏 |
| macOS 窗口风 | 整站套进 macOS 窗口，访达式图标网格，可切列表视图 | 同步套窗口 |
| 渐变仪表盘风 | 悬浮圆角侧栏，问候栏 + 紫色渐变额度卡，右侧存储分布面板 | 同步改为侧栏 |
| 蓝白工作台风 | 分组侧栏 + 顶部搜索条，蓝白横幅、统计卡、可排序可切网格的文件面板，右侧数据列 | 同步改为侧栏 |
| 深空科技风 | 深蓝星空底 + 发光描边的深色工作台 | 同步改为侧栏 |
| 紫韵会员风 | 蓝紫渐变横幅 + 金色会员权限卡 + 底部卖点横幅 | 同步改为侧栏 |
| 清爽极简风 | 近乎纯白，横幅无卡片、五张统计卡、时间轴动态 | 同步改为侧栏 |
| 蓝天白云风 | 天蓝渐变横幅 + 浮标卖点 + 底部升级横幅 | 同步改为侧栏 |
| 潮酷涂鸦风 | 粗黑描边 + 硬投影 + 撞色，黑侧栏橙高亮，超大标题横幅 | 同步改为侧栏 |
| 云端门户风 | 顶部横向导航，天空渐变横幅 + 大搜索框，右侧蓝色上传卡 | 保持顶栏 |

![上传门户风](https://raw.githubusercontent.com/hefollo/pan/main/img/%E4%B8%8A%E4%BC%A0%E9%97%A8%E6%88%B7%E9%A3%8E.png)

**配色型**（15 套）只改颜色和质感，保持默认顶部导航：蓝白清爽、黑夜风格、霓虹科技黑夜、蓝紫渐变玻璃、暗黑科技后台风、青瓷微澜、淡紫点阵、米白纸张、淡粉暖调、天蓝细纹、薄荷蜂巢、落日熔金、深海玻璃、翡翠流光、樱雾玻璃。

外观设置页顶部还有一条吸顶的「外观配色」工具条（「保存外观」按钮也在上面，翻到最底下也能直接点）：拿取色盘挑一个主色和副色，这套外观的**整套配色一起换掉**——按钮、进度条、导航高亮、面板、边框、文字、阴影、整页背景全部按新主色重算，前台和后台一起变。换的是色相关系而不是简单替换：深浅层次和对比度保持原样，纯白纯黑和灰色阴影不动，红色危险、绿色成功这类状态色也自动保留。灰白系不跟着色相走，所以页面底色、面板底色、正文色、边框色另有「界面底色」四项单独可调——把白卡片换成米色，全站的卡片、表格、下拉面板一起跟着换，而按钮上的白字不受影响。**每套外观各存各的**，改哪套只影响哪套，换回去颜色还在，一键可恢复内置配色；工具条里的下拉框和下面的外观卡片是同一个选择、两边同步，不会出现「选的外观」和「调的颜色」对不上的情况。

## 云存储支持

本地存储，以及阿里云 OSS、腾讯云 COS、华为云 OBS、又拍云、七牛云、通用 S3 兼容存储、WebDAV、OneDrive。

![存储类型设置](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%AD%98%E5%82%A8%E7%B1%BB%E5%9E%8B%E8%AE%BE%E7%BD%AE.png)

- **通用 S3** 可对接 AWS S3、MinIO、Cloudflare R2、Backblaze B2 等一切兼容 S3 协议的平台
- **WebDAV** 可对接坚果云、Nextcloud、Alist、群晖等
- **OneDrive** 支持个人版 / 商业版 / 世纪互联版，后台一键授权

存储设置是卡片式的，一眼看清每种存储支持直传 / 直链 / 断点续传，密钥默认打码，每一种都能一键做连接测试。

## 邮件发信

用于发送注册验证码，四种通道可选，勾多个时按顺序尝试、前一个失败自动切下一个。

| 通道 | 说明 |
| --- | --- |
| SMTP | 填自己的邮箱账号和授权码，QQ 邮箱、163、企业邮箱都可用 |
| Resend / Brevo / SendGrid | 走 HTTPS 接口发信，不受服务器封禁邮件端口的影响 |

![邮件发信设置1](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E9%82%AE%E4%BB%B6%E5%8F%91%E4%BF%A1%E8%AE%BE%E7%BD%AE1.png)
![邮件发信设置2](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E9%82%AE%E4%BB%B6%E5%8F%91%E4%BF%A1%E8%AE%BE%E7%BD%AE2.png)
![邮件发信设置3](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E9%82%AE%E4%BB%B6%E5%8F%91%E4%BF%A1%E8%AE%BE%E7%BD%AE3.png)

**没有默认通道**，勾选哪个用哪个，一个都不勾就是关闭发信。页面底部可以测试发信，填个邮箱点一下就知道通不通，失败时显示具体原因。

![发信记录](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%8F%91%E4%BF%A1%E8%AE%B0%E5%BD%95.png)

发信记录里每一封验证码邮件的发送结果、通道、来源都有据可查，顶部还有最近 1 小时、24 小时的发送量与上限对比，方便判断接口有没有被滥用。后台可配置验证码有效期、同邮箱发送间隔、每日发送上限、全站发信上限，以及一次性邮箱域名黑名单。

## 赞助页

- 可以配置微信、QQ 钱包、支付宝三张收款码，某一项留空则赞助页上不显示该收款方式
- 赞助名单在后台维护
- 赞助页配色跟随站点当前外观主题
- 整个功能可以关闭：关闭后前台导航不显示入口、直接访问地址也会跳回首页，后台菜单同时隐藏，名单数据保留

## 后台总览

![后台首页](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E5%90%8E%E5%8F%B0%E9%A6%96%E9%A1%B5.png)

一级菜单收成「首页 / 文件 / 用户 / 设置 / 退出」五项，「设置」下拉再按「站点 / 上传与存储 / 用户与付费 / 安全与合规」分组。侧栏型外观下这些分组是常驻展开的，不用点开。

![文件管理](https://raw.githubusercontent.com/hefollo/pan/main/img/%E5%90%8E%E5%8F%B0%E6%88%AA%E5%9B%BE/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86.png)

文件管理支持搜索、批量操作、就地切换文件状态，图片可以直接预览。

## 环境要求与安装

- PHP >= 7.1，需要 cURL 扩展
- MySQL / MariaDB
- 视频检测另需 ffmpeg（自建检测服务的一键脚本会自动装）

上传程序 → 访问 `/install/` 填数据库信息完成安装 → 后台配置存储和其它功能。从旧版本升级的话，覆盖文件后访问 `/install/update.php` 跑一次数据库升级。

> 站点自身的 CSS/JS 用文件修改时间做缓存串，改完传上去地址就变了，浏览器和 CDN 会自动取新文件，不用手动清缓存。
>
> 服务器开着 OPcache 的话（宝塔默认开），覆盖 PHP 文件后**要重启一次 PHP-FPM**，否则会继续跑缓存里的旧代码。

## 致谢

感谢原开源项目 [netcccyun/pan](https://github.com/netcccyun/pan) 提供的基础程序。
