# ugly-php-blog **Repository Path**: wfdaj/ugly-php-blog ## Basic Information - **Project Name**: ugly-php-blog - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-02 - **Last Updated**: 2024-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ugly-PHP-Blog ## 简介 *也叫作**UPB***,这是我自己写的博客系统,也正运行于我的服务器之上,域名之下. [RESTKHZ | 休止千鹤](https://blog.restkhz.com) > 麻雀虽小,五脏俱全. > > UPB的设计方向是给个人使用的, 轻量, 简单, 安全的php博客系统. > 你可以克隆下来把玩, 我相信可以作为新手PHP入门的参考. 毕竟目前比较粗糙, 你未必会喜欢它给你的体验. **(如果你有兴趣可以直接翻到 安装)** 目前版本定在0.8.5,~~可能长期会在0.9.999~~ **欢迎各位提出建议指正.** **如果能有 20 stars 我马上加班加点在能力范围之内添加功能修(写)BUG!** 开发基于自写的玩具:**Ugly-PHP-Framework**.毕竟自己写的框架不做出一些东西是没有价值的.~~(尽管做出的东西价值也不大)~~ ## 特性 ### Markdown文章编辑 我还是很喜欢Markdown写作的. 相信很多人也是. 有时候我会从一些Markdown笔记里直接复制笔记发出来,挺方便.(感谢Editor.md)后台写作的时候会自动存入localstorage备份防止丢失. *文章可以在首页,分类中隐藏.也可以设置拒绝访问.* ### 集成的评论功能 评论功能并非第三方提供. 如果是管理员的回复,会带有一个标记. 总体风格模仿Wordpress.简单的引用功能. 后台可以删除评论,但是目前没做审核功能是个缺陷. 防Spam方面我是用JS玩了一个小把戏,因为很多spam bot没有JS解析,所以加了一个简单的JS渲染了一个隐藏表单,后端会进行检查是否渲染判断是否是bot. ### 一定的SEO,LaTeX支持,简单的基于Session计数 SEO还是有一定重要性的,网站动态生成sitemap,也可以自己手写meta description.简单的路由让博客站极为扁平.keyword不太重要,不急,以后可以慢慢做个Tag当keyword. 网站使用Session计数,过滤了一部分的爬虫UA. 真的要统计还是用第三方平台更靠谱一些. 至于Latex用的MathJax,这个优点有点牵强,任何网站都可以轻松的自己加自己配置. ### 轻小 因为穷,租不起好的服务器,所以数据库使用了Sqlite.对于512M的内存绰绰有余.Sqlite不需要占用太大内存,我的博客站服务器没跑什么东西,整个机器物理内存占用日常在80MB左右浮动,我相信256M的机器也能带的动这个博客系统. 另一方面, 这种博客站流量并不太大, 数据量也并不大. 此时不同数据库性能其实没有明显差距. 反而装Mysql在512M的机器上有时候会触发OOM, 掏钱扩容内存没访客也是浪费. 什么? 小钱你不在乎? nevermind… ### RSS 我不喜欢说RSS流行之时是互联网时代的巅峰. 现在我们不再Explore网络, 而是等待算法投喂. 希望访客有缘能够探索到这里, 致敬今天的“互联网拾荒者”们. 博客自带RSS生成器, 并且进行了缓存. ### UPB安全吗? 我只能说比较安全.我不能做出承诺,如果你了解信息安全,没有人能承诺100%的绝对安全. - **SQLi:** 框架使用pdo,几乎完全进行了预处理.就算是访客统计pid没有pdo,也强制把它转换成int进行消毒. 自己测试的时候没有发现SQL注入. - **XSS:** 前台评论交互没有发现XSS, 但是后台因为一些需要标签和特殊字符的问题,**后台存在潜在XSS ** - **上传漏洞:** 至于图片上传完全交给第三方图床. 根本没上传点. - **密码学:** 密码使用Bcrypt进行Hash,即便你的备份被人偷了,密码hash也不容易被还原. - **数据安全:** 后台有数据库备份功能, 用不用那真不是我的事了. - **危险函数:** 没有使用一切命令执行函数, 除了备份数据库以外, 没有文件系统函数. - **文件包含:** 之前一个版本*可能有潜在的文件包含问题,但是路径重写对攻击造成了阻碍*. 无论如何,我在路由控制器周围还是移除了: `./和\0` ## 缺陷 1. 自学了两个星期Vue.js做的后台, 非专业开发, 就那样吧. 2. Categories管理功能不完善 3. 轻量这点明显和Hexo,Ghost没有可比性. 4. 你克隆下来的,Twig模板里页底依旧是我的信息, 因为他们是被硬编码的. 你需要自己动手改模板. 我不懂前端. 5. 没有在windows平台下测试过,已知的,后台的系统负载在windows平台下肯定不会正常显示. 6. 没有安装脚本,**未来在我认为完成度足够的时候会加上.** 7. 没有生态, 也几乎不可能有生态. ## 未来 会缓慢更新的. 只要我自己网站没有放弃. 我这个域名下的博客诞生于2016年, 未来应该还会继续下去. 会优先完善基础功能. 但是目的依旧是给他人学习作为参考. 当然, 欢迎使用, 体验如何另当别论. ## 安装试用 > *因为开发测试还在进行,所以并不打算在现阶段制作安装脚本,所以需要手动配置* > > ~~另外后台管理项目(ugly-ap)由于使用Vue.js, ajax需要手动指定api域名,需要手动编译,并非开箱即用.~~ ~~你应该先在环境中布置php环境, php尽可能安装7.x版本. 安装并且打开扩展: pdo,xml~~ ### 环境 因为更新和兼容问题, 已经不再兼容php7.0, 推荐php版本>=8.0 需要pdo-sqlite和xml支持. ### 目录结构 - ugpf 核心文件 - data 数据库文件,sqlite.db,旁边后缀为sql的文件是数据库结构. - public 这个目录是网站根目录,安全起见,**根目录必须在这**. ### 安装过程 以下操作需要系统安装sqlite3. 首先,你需要进入data目录编辑数据库`sqlite.db`,进入`users`表,`name`字段是显示名称,`user`是登录名称. 密码现在是空的,你需要自己生成Bcrypt hash.你可以打开终端如此操作,``是你的密码: ```bash php -r 'echo password_hash("",PASSWORD_BCRYPT);' ``` 你会获得一个hash,将它复制出来,现在在终端输入sqlite3 ./sqlite.db导入数据库中: ```bash $> sqlite3 ./sqlite.db SQLite version 3.33.0 2020-08-14 13:23:32 Enter ".help" for usage hints. sqlite> ``` 输入SQL语句,``是你的密码哈希: ```sql UPDATE users SET password = '' WHERE id = 1; ``` 然后你就可以把文档根指向public,启动web服务.如果只是本地测试的话,你也可以cd去public目录使用php内置web服务看看`php -S 127.0.0.1:8000` 如果可以访问,功能正常,那么一切都好. 接下来你可以前去./ugpf/view中修改html格式模板,DIY你自己的博客风格.