写在前面

在您使用ffmpeg扩展时,在本程序上传视频进行转码时会占用cpu非常多的资源,视频文件越大所转码时间也越长,cpu越好转码越快,虽然这会占用您极大部分的服务器性能,但是仍然建议您使用ffmpeg,在您进行转码时,可能会短暂出现站点无法访问的情况,但这不影响其他站点和项目的正常运行

I Love Day 情侣成长记录小站

一个为情侣/伴侣设计的轻量级「私密小站」,用于记录在一起的每一天:纪念日、相册、日记、留言等内容都集中在一个温馨的小空间里。

本项目包含前台展示站点和后台管理系统,适合部署在个人服务器上供两人共同使用。

本项目由多种 AI 模型与人工协作开发,代码贡献度大致为:

  • GPT 5.1:约 60%
  • Claude 4.5:约 35%
  • Gemini 3 Pro:约 2%
  • 人工手动调整与纠错(MiTao):约 3%

项目发起与维护者:MiTao

一句话概括:这是一个自带安装向导的情侣共创 + 相册 + 日记小站,安装完成后就可以在自己的域名下长期保存你们的爱情记录。

功能概览

前台功能

首页 Dashboard

  • 展示「在一起的天数」及实时计时器(天/小时/分钟/秒)。
  • 统计文章数量、相册数量、纪念事件数量、留言数量。
  • 展示近期纪念事件,以色彩丰富的胶囊卡片形式呈现。
  • 展示最新文章、相册和公开留言。

文章 / 日记

  • 文章列表页面,支持查看已发布的文章。
  • 文章详情页支持友好的排版(包括对富文本/Markdown 内容的渲染)。
  • 可用于写日记、情书、重要记录等。

相册

  • 相册列表页面,以卡片形式展示各个相册。
  • 单个相册详情页面可查看图片和视频内容。
  • 静态文件存储在 uploads/albums/ 等目录中。

纪念事件时间线

  • 记录恋爱过程中重要的纪念日,如在一起、表白、旅行、生日等。
  • 支持普通事件和每年重复的纪念事件(如每年纪念日)。
  • 首页展示近期/重要事件,单独页面展示完整时间线。

留言板

  • 公开留言板,可记录彼此的小心事。
  • 支持区分登录用户和访客留言。
  • 留言可设置是否公开,仅自己可见的留言不会对外展示。

用户登录/登出

  • 登录页面 /login.php 用于情侣双方登录后台。
  • 支持安全的会话管理及登出操作 /logout.php

共创功能(情侣共同写作)

情侣双人账号体系

  • 系统默认面向两位固定用户使用(例如「你」和「另一半」)。
  • 登录后可在同一空间中查看和管理你们共同的内容。

文章共创 / 协作写作

  • 支持对同一篇文章进行协作创作,以「积木式写作」的方式按内容块来搭建整篇文章。
  • 在后台可以为每篇文章设置另一半是否拥有编辑权限,从而控制哪些内容可以共同修改。
  • 提供灵活的内容块排序与管理方式,把一次次「聊天式创作」的片段沉淀成完整长文。

专属互动体验

  • 在撰写内容的过程中,可以像聊天一样你一句我一句地补充内容,形成类似「聊天式创作」的体验。
  • 当文章开启共创后,在前台会以特殊样式展示(例如显眼的标记或视觉强调),读者一眼就能看出这是「两个人一起写」的内容。
  • 共创文章最终是对所有访客可见的公开内容,但只有情侣双方可以参与编辑和共创。

加密与隐私空间

加密文章 / 加密相册

  • 在后台创建或编辑文章、相册时,可以勾选「加密内容 / 加密相册」开关。
  • 被加密的内容仅在情侣双方登录后完整展示;未登录或普通访客只能看到「加密内容,请登录后查看」的提示,不会暴露正文、描述和真实封面等细节。

访问控制与展示细节

  • 加密内容在列表和详情页都会有明显的锁标记和特殊样式,方便区分哪些是公开内容,哪些是仅情侣可见的私密空间。
  • 对于加密相册,如果用户未登录,系统会刻意隐藏真实预览图和部分元数据,只保留必要的标题/占位,避免敏感信息被意外窥探。

配合登录与密码保护

  • 登录密码在后台统一管理,支持修改密码和基础复杂度校验。
  • 建议将真正私密的照片、文字放入加密文章和加密相册中,配合账号密码保护,共同构成情侣专属的「半公开 + 私密」两层空间。

后台管理功能(/admin)

仪表盘

  • 总览文章、相册、事件、留言等数量。
  • 对图片资源进行采样统计,估算平均体积,帮助了解存储占用情况。
  • 检测服务器上的视频处理工具(如 ffmpeg)可用性,用于视频相册相关能力。

文章管理

  • 新增、编辑、删除文章。
  • 控制文章状态(例如已发布、草稿等)。
  • 可设置情侣双方的协作编辑方式,适合作为共享日记。

相册管理

  • 创建与管理相册。
  • 上传图片与视频,支持基础的媒体管理。
  • 提供图片统计工具,估算图片数量和平均大小。

纪念事件管理

  • 新增、编辑、删除纪念事件。
  • 支持标记事件为「重要」或「每年重复」。
  • 自动计算距离下一次事件的天数或距离已过去的时间。

留言管理

  • 查看前台所有留言。
  • 支持将留言标记为删除(后台为软删除逻辑)。
  • 可从后台跳转到前台留言页面。

个人资料与系统设置

  • 修改个人昵称、头像等信息。
  • 配置站点名称、恋爱开始日期等基础信息。
  • 调整与文件上传、展示样式等相关的常规设置。

技术栈与目录结构

技术栈

  • 语言:PHP(适用于常见的 PHP 7+ 环境)
  • 数据库:MySQL / MariaDB
  • 前端:HTML + CSS + JavaScript + Font Awesome
  • 环境要求(建议):
    • PHP 7.4 或以上,启用 PDO 等常用扩展
    • MySQL 5.7 / MariaDB 及以上版本
    • Web 服务器:Nginx / Apache 任一
    • 可选但强烈推荐:服务器安装 ffmpeg 命令行工具(用于视频转码和封面图生成)

关于 ffmpeg 依赖

ffmpeg 在本项目中的作用(做什么)

  • 为相册和文章中上传的视频做一次统一转码,输出为更通用的 H.264 + AAC 格式,尽量减少「有声黑屏」等兼容性问题。
  • 为视频自动截取封面图,用于相册卡片、灯箱预览等位置的封面展示,让相册在有视频时也有统一的缩略图体验。
  • 在后台工具页中,对历史视频进行一键批量转码,方便你在更换服务器或导入旧视频后,一次性提升兼容性。

后台提示与排查

  • 后台仪表盘会自动检测服务器上 ffmpeg 的可用状态,并以醒目的提示卡片展示(例如:已正常可用、已安装但无法调用、未检测到等)。
  • 管理员可以通过这块提示快速判断当前服务器是否需要安装或调整 ffmpeg,从而决定是否开启视频转码与封面自动生成等增强能力。

ffmpeg 的可选性(必装吗)

  • 不是强制依赖:不安装 ffmpeg,系统依然可以正常运行,图片和大部分浏览器支持的视频依然可以正常上传和播放。
  • 强烈推荐安装:安装并正确配置 ffmpeg 后,视频相关体验会显著提升,特别是在移动端和部分旧设备上。

不安装 ffmpeg 时会有什么影响

  • 上传视频时:
    • 视频文件会按原始格式保存,不做自动转码;如果某些设备/浏览器对该格式支持不好,可能出现无法播放或「有声黑屏」的情况。
    • 自动生成视频封面图的功能不可用,相册中部分视频可能没有预览封面。
  • 后台工具方面:
    • 视频一键批量转码工具不可用。
  • 总体而言:
    • 不影响图片与大多数视频的基础上传和观看(前提是浏览器本身支持该视频格式)。
    • 主要损失的是「兼容性优化」和「自动封面」等增强型能力。

目录结构(简要)

  • /index.php
    前台首页入口,负责加载配置、核心组件、获取首页统计数据并渲染首页模板。
  • /admin/
    后台管理入口及所有管理页面(仪表盘、文章管理、相册管理、事件管理、留言管理、系统设置等)。
  • /api/
    提供接口端点,比如异步操作、AJAX 请求等。
  • /views/
    前台页面模板,包括头部、尾部、首页、文章列表、相册、事件、留言等视图文件。
  • /assets/
    静态资源目录(CSS、JavaScript、字体、图片、第三方前端库等)。
  • /uploads/
    用户上传资源目录,包含相册图片、视频、文章封面等媒体文件。
  • /config/
    全局配置和数据库配置:
    • config.php:调试模式、错误处理、时区、上传路径、站点名称、安全相关配置等。
    • database.php:数据库连接信息(主机、端口、数据库名、用户名、密码、字符集等),支持通过环境变量覆盖。
  • /core/
    核心业务基础设施,主要包含:
    • 数据库访问封装(统一管理连接与查询)。
    • 用户认证和会话管理(登录校验、当前用户、权限等)。
    • 内容解析与渲染组件,用于文章内容的友好显示。
    • 通用工具与辅助方法(日期格式化、CSRF 处理等)。
  • /database/
    数据库脚本目录,包含:
    • schema.sql:数据库表结构定义和基础数据,用于初始化数据库。
  • 其他文件:
    • install.php:安装向导(首次运行时用于初始化系统)。
    • robots.txt:搜索引擎爬虫控制文件。
    • sitemap.php:站点地图生成。
    • 404.html:自定义 404 错误页面。
    • favicon.ico:站点图标。

部署与安装

推荐安装流程(简化版):
1)准备好 PHP + MySQL 环境 → 2)在数据库中创建一个空库 → 3)在站点根目录创建 enable_install.lock → 4)浏览器打开 https://你的域名/install.php 跑完 3 个步骤 → 5)删除(或移走) install.php,开始愉快使用小站。
下文提供的是更细致的分步说明,你也可以按自己的习惯选择手动建库 / 手动改配置的方式完成安装。
以下步骤不会暴露任何代码实现细节,仅从使用者角度说明操作流程。

1. 准备运行环境

  1. 在服务器上安装并配置:
    • PHP(建议 7.4+,启用 PDO 和常见扩展)。
    • MySQL / MariaDB。
    • Nginx 或 Apache。
  2. 确认 Web 根目录已经指向本项目所在目录(例如 /www/wwwroot/yc.miccuc.com)。
  3. 确保 PHP 进程对 uploads/ 等上传目录具有写权限(至少 uploads/ 需要写权限)。

2. 创建数据库

提示:如果你准备使用安装向导(install.php),安装过程会尝试自动创建数据库并导入表结构,你可以直接跳到「5. 解锁并使用安装向导」,本节仅适合希望提前手动建库的用户。
  1. 在数据库中创建一个新的空库,例如:i_love_day(名称可以自定义)。
  2. 如需完全自行控制数据库结构,也可以使用命令行或图形化工具(如 phpMyAdmin)手动导入 database/schema.sql 中的表结构和基础数据:
    • 例如(在项目根目录):
      mysql -u your_user -p your_db < database/schema.sql
    • 注意将 your_useryour_db 替换为实际的数据库用户名和库名。
  3. 如果你打算交给安装向导自动导入表结构,可以只创建一个空库,无需手动导入 schema.sql

3. 配置数据库连接

一般情况下,推荐在安装向导的「数据库配置」步骤中填写数据库信息,由系统自动生成 / 覆盖 config/database.php
如果你更习惯提前手动编辑配置文件,或安装向导无法写入文件,可以参考本节进行配置。
  1. 打开(或创建)config/database.php 文件。
  2. 根据实际情况修改:
    • 数据库主机(如 localhost
    • 数据库端口(默认 3306)
    • 数据库名称
    • 数据库用户名
    • 数据库密码
  3. 正式环境建议:
    • 通过环境变量(如 DB_HOSTDB_NAMEDB_USERDB_PASSWORD 等)提供敏感信息。
    • 避免在代码仓库中提交真实账号与密码。

4. 配置基础信息

  1. 打开 config/config.php
    • 根据需要设置站点名称。
    • 根据环境调整调试模式(开发环境可开启调试,上线环境建议关闭并记录日志)。
    • 根据服务器环境设置时区、上传目录、最大上传大小等。
    • 为安全密钥设置随机且足够长度的字符串(建议使用随机生成工具)。
  2. 首次安装时,访问前台首页如检测到未安装,会自动跳转到安装向导页面,引导完成初始化。

5. 解锁并使用安装向导

出于安全考虑,安装向导默认是「上锁」状态,需要手动解锁后才能访问。
  1. 在站点根目录创建一个空文件:enable_install.lock
    • 例如通过命令行创建:touch enable_install.lock
    • 或在面板/FTP 中新建同名空文件。
  2. 确认根目录下不存在 .installed 文件(如果是全新部署通常本来就没有)。
  3. 在浏览器中访问:https://你的域名/install.php
    • 步骤 1:填写数据库连接信息并测试/初始化数据库。
    • 步骤 2:创建第一个账号(情侣中的一方)。
    • 步骤 3:设置站点标题、描述、恋爱开始时间等信息。
  4. 安装完成后:
    • 系统会自动写入 .installed 标记文件,并自动删除 enable_install.lock,防止被误重复安装。
    • 建议同时手动删除 install.php 或将其移出 Web 可访问目录,进一步降低风险。
  5. 如果已经存在 config/database.php 且站点处于「非调试模式」(config/config.php 中将调试开关关闭),同时 .installed 被误删,为了安全系统会自动禁用安装向导:
    • 此时直接访问 install.php 会得到禁止访问(403)提示。
    • 如确需重新安装,请临时将 config/config.php 中的调试模式打开(例如将调试常量改为开启),完成安装后务必再改回关闭状态。

6. 访问站点

  • 前台首页:在浏览器访问绑定的域名(如 https://your-domain.com/)。
  • 后台登录:
    • 访问 https://your-domain.com/admin/https://your-domain.com/login.php
    • 使用数据库初始化脚本中预置的账户,或在安装向导中设置的情侣账号登录。
  • 登录后可在后台进行:
    • 撰写文章/日记
    • 创建相册并上传图片/视频
    • 添加纪念事件
    • 管理留言
    • 调整系统设置和个人信息

安全与隐私说明(高层)

  • 会话安全
    系统使用服务端 Session 管理登录状态,并对 Session Cookie 做基础安全加固(如只允许通过 HTTP/HTTPS 访问、禁止前端脚本获取、必要时开启安全标记等)。
  • 登录保护
    通过限制一定时间窗口内的登录失败次数、记录登录尝试等方式,降低暴力破解风险;登录失败时加入微小延迟,进一步减缓攻击节奏。
  • 数据库访问
    数据库访问统一通过封装层进行,配合预处理语句,有利于避免常见注入问题。
  • CSRF 防护
    对后台敏感操作(如删除、修改)使用表单令牌机制进行校验,以减少跨站请求伪造的风险。
  • 文件上传与存储
    上传目录独立于代码目录管理,并对上传文件大小进行限制。生产环境应再结合 Web 服务器配置限制可执行脚本类型,避免上传脚本被执行。

开发与二次开发建议

以下内容仍保持高层次描述,不涉及具体函数或内部实现。
  • 前后端结构清晰
    • 请求入口文件负责加载配置、初始化核心组件,然后分别引入对应的视图模板。
    • 数据库查询和业务逻辑集中在少量核心组件中,视图层主要负责渲染页面和输出数据。
  • 模板与样式定制
    • 前台样式集中在 assets/cssviews/ 模板中,适合进行 UI 改造。
    • 可根据情侣喜好调整颜色、字体、布局,或增加动画效果。
  • 功能扩展
    • 可以在 admin/api/ 中新增管理功能和接口。
    • 如需扩展标签系统、更多类型的相册展示方式、提醒/倒计时模块等,可在现有结构基础上扩展。
  • 部署运维建议
    • 使用 HTTPS 访问站点,保障传输安全。
    • 定期备份数据库和 uploads/ 目录,避免数据丢失。
    • 对后台地址进行访问控制(比如仅在特定 IP 段允许访问 /admin,或增加额外验证)。

授权与二次开发说明

二次开发许可

  • 允许在遵守本说明的前提下对本项目进行修改、扩展和二次开发,用于自用或部署给他人使用。
  • 建议在进行深度改造前,先阅读本 README 及项目结构说明,避免误删安装向导、配置文件等关键部分。

署名与原项目信息(必须保留)

  • 无论是原版使用还是二次开发版本,都需要在以下任一位置清晰保留署名信息:
    • 项目根目录的 README / 说明文档中;
    • 或网站关于页 / 页脚等明显位置。
  • 推荐保留的内容包括:
    • 原项目名称:I Love Day 情侣成长记录小站
    • 原项目地址:https://github.com/MiTaosot/I_Love_Day
    • 作者:MiTao
    • 主要 AI 代码贡献者:GPT 5.1(约 60%)Claude 4.5(约 35%)Gemini 3 Pro(约 2%)

修改版本说明

  • 如果你对项目进行了较大改动(例如更换品牌名、界面整体重构、增加大量新功能),建议:
    • 在你的 README 中增加「基于 I Love Day 二次开发」的说明;
    • 简要列出你添加或修改的主要功能,便于后续维护者理解差异。

常见问题(FAQ)

Q:首次访问为什么会跳转到安装页面?
A:如果系统检测到数据库未配置或未完成安装初始化,会自动跳转到安装向导页面,引导你完成数据库配置和基础信息设置。完成安装后,首页会正常显示内容。

Q:可以把站点当作公开博客吗?
A:可以,但本项目设计初衷是情侣/伴侣之间使用,很多文案与界面更偏向私密小站风格。你可以通过修改文案和样式来适配公开博客场景。

Q:图片和视频会存在哪里?
A:上传的文件保存在项目的 uploads/ 目录(如相册图片在子目录中),注意部署时应为该目录设置足够的存储空间和备份策略。

文件改动说明

本文档为项目根目录下新增的 README.md,用于说明整体功能、部署方式与使用建议,不包含任何具体函数或内部实现细节。