说几句
如题,开源地址:https://gitee.com/faryou/fylog
这个博客系统是针对我的需求而设计的,更多功能方面相关的介绍自己去看README,我不想再写一遍了。
三年前,我独自探索,自学建站、域名使用,用Z-BlogPHP搭出了博客网站,那时的我初入初中,渴望有一番新作为;今天,高中开学之际,我自己的博客系统正式发布,让我告别了使用现有系统,定制甚至一些普通功能的实现都极不方便的困境;不知三年之后,当我辞别高中,进入大学之时,本站又会有怎样一番变化……
我个人对AI编程的看法,AI这玩意儿(至少我用的免费版Deepseek),写些小程序肯定没有问题,但是面对我这种比较小众的需求,你要给他说清楚你到底想要什么并非易事。我写这个博客系统,跟Deepseek用了整整两个对话,其中一个甚至到了消息上限了。而且AI它写到后面会把你前面的需求忘干净。比如说我从最开始要它用PHP5.6给我写,结果它在后面还是给我写出了??这种PHP7才有的语法,关键我执行发现问题之后它还找不到错误,最后我新开了个对话,它立刻就发现了……我回到原对话中告诉了它问题,让它继续写,结果它愣是没记住这个问题……最后我只能每次都自己默默把??操作符改掉。
我是第一次用PHP编程,这个门槛真的是不高,至少对我这种学过C++和汇编这类强语法语言的人来说写PHP真的算是“通俗易懂”了。这个系统的diary.php是我写的,一方面我想体验一下自己写PHP,另一方面也是方便AI读懂我的意思,所以你去看源代码就会发现它的码风和life.php、tech.php颇不同……后面指挥AI写就方便很多。
用AI编程的人首先自己得会编程,这是肯定的,因为以目前AI的水平,稍复杂些的项目就需要人来兜底了。
版本号1.1是因为相对最初1.0版本作了大量优化修改,干脆升个版本号。
OK,就说这么多,下面是这个程序的设计结构,充当技术文档吧~
FYlog程序设计结构
数据表结构
这里字段名的命名应该还是比较通俗的,配合备注看看吧~
| 表名 | 字段名 | 备注 |
|---|---|---|
| blog_users | id,username,password,email,website,usergroup,banned,created_at | 用户列表 |
| blog_settings | id,option_name,option_value | 设置表(一行一项设置) |
| blog_friendlinks | id,name,url,description,email,sort_order,status,ip,created_at,updated_at,mail_reminded | 友链表 |
| blog_life_articles | id,title,content,finished_at,category_id,status,created_at | 生活类文章表 |
| blog_life_categories | id,name,slug,description,sort_order | 生活类分类表(不支持多级) |
| blog_life_tags | id,name,slug | 生活类标签表 |
| blog_life_article_tags | article_id,tag_id | 生活类文章-标签映射表 |
| blog_life_comments | id,article_id,author,email,website,content,reply_id,status,ip,finished_at,mail_reminded | 生活类评论表 |
| blog_tech_articles | id,title,content,finished_at,category_id,status,created_at | 技术类文章表 |
| blog_tech_categories | id,name,slug,description,parent_id,sort_order | 技术类分类表(支持多级) |
| blog_tech_tags | id,name,slug,description,parent_id | 技术类标签表(支持多级) |
| blog_tech_article_tags | article_id,tag_id | 技术类文章-标签映射表 |
| blog_tech_comments | id,article_id,author,email,website,content,reply_id,status,ip,finished_at,mail_reminded | 技术类评论表 |
| blog_diary_articles | id,finished_at,title,content,status | 日记类文章表 |
| blog_diary_comments | id,author,email,website,content,reply_id,status,ip,finished_at,mail_reminded | 日记类评论表(注意日记评论无对应的文章,相当于留言板) |
| blog_diary_files | id,name,size,path | 废弃附件设计,不用管 |
| blog_ip_ban | id,ip_pattern,remark,status,created_at,updated_at | IP屏蔽列表 |
| blog_security_logs | id,user_id,username,ip,action,detail,created_at | 安全日志表 |
程序设计
fylog/
│
├── index.php # 网站首页
├── life.php # 生活文章列表/详情/分类/标签
├── tech.php # 技术文章列表/详情/分类/标签
├── diary.php # 日记文章列表/详情
├── archive.php # 文章归档
├── about.php # 关于页面
├── friendlinks.php # 友链申请页面
├── 404.php # 404错误页面
├── install.php # 安装程序
├── favicon.ico # 网站图标
│
├── .htaccess # URL伪静态规则
│
├── admin/ # 后台管理(真实路径,名称自定义)
│ ├── index.php # 后台首页
│ ├── login.php # 后台登录
│ ├── logout.php # 退出登录
│ │
│ ├── settings.php # 系统设置
│ ├── users.php # 用户管理
│ ├── user.php # 个人设置
│ ├── user_edit.php # 编辑用户
│ │
│ ├── friendlinks.php # 友链管理
│ ├── friendlink_edit.php # 友链编辑
│ │
│ ├── logs.php # 安全日志
│ ├── ban_ip.php # IP屏蔽管理
│ ├── rss.php # RSS生成
│ ├── sitemap.php # Sitemap生成
│ │
│ └── editor/ # 内容管理
│ ├── editor.php # 内容管理首页
│ │
│ ├── life_articles.php # 生活文章列表
│ ├── life_article_edit.php # 生活文章编辑
│ ├── life_categories.php # 生活分类管理
│ ├── life_tags.php # 生活标签管理
│ ├── life_comments.php # 生活评论管理
│ ├── life_comment_edit.php # 生活评论编辑
│ │
│ ├── tech_articles.php # 技术文章列表
│ ├── tech_article_edit.php # 技术文章编辑
│ ├── tech_categories.php # 技术分类管理
│ ├── tech_tags.php # 技术标签管理
│ ├── tech_comments.php # 技术评论管理
│ ├── tech_comment_edit.php # 技术评论编辑
│ │
│ ├── diary_articles.php # 日记文章列表
│ ├── diary_article_edit.php # 日记文章编辑
│ ├── diary_comments.php # 日记评论管理
│ └── diary_comment_edit.php # 日记评论编辑
│
├── configs/ # 配置文件目录
│ ├── config.inc.php # 数据库配置(安装生成)
│ └── mail.config.php # 邮件配置(安装生成)
│
├── functions/ # 函数库
│ ├── sql_functions.php # 数据库连接与基础函数
│ ├── session_functions.php # Session管理
│ ├── user_functions.php # 用户相关函数
│ ├── log_functions.php # 安全日志函数
│ ├── mail_functions.php # 邮件发送函数
│ │
│ ├── life_functions.php # 生活文章函数库
│ ├── tech_functions.php # 技术文章函数库
│ └── diary_functions.php # 日记文章函数库
│
├── includes/ # 公共包含文件
│ ├── header.php # 页面头部(含IP屏蔽、维护模式)
│ ├── footer.php # 页面底部
│ ├── sidebar.php # 侧边栏
│ ├── top_nav.php # 顶部导航
│ ├── friendlinks.php # 友链展示
│ │
│ ├── Parsedown.php # Markdown解析器
│ │
│ ├── phpmailler/ #phpmailer邮件发送工具
│ │
│ └── highlight/ # 代码高亮js库
│
└── user/ # 用户前端功能
├── comment_submit.php # 评论提交
└── user_message.php # 消息提示函数
可以根据自己的需求对相应的文件进行修改~