基于PHP的网盘系统
预览项目地址Atlantic web disk
dockerhub分为了两个镜像(php和db)
atlant1c/disk-db general | Docker Hub
atlant1c/disk-php general | Docker Hub
at1ANtic/web-disk (github.com)
基本信息
实现的功能:
- 注册(为每个新用户创建新的文件夹)。
- 基于JWT认证实现登陆,以及分别存放上传的文件。
- 注销用户(删字段,删文件夹)
- 用户的控制面板,可视化文件以及大小。
- 限制每个用户的网盘大小。
- 文件上传,下载,删除。
- 前端UI(搬运b站up@山羊の前端小窝)
- docker一键部署(配置php-apache环境,MySQL初始化)。
关于安全方面的考虑:
- 关闭报错防止泄露信息
- 使用预处理防止sql注入
- 不可逆加密用户密码,防止因为sql注入而泄露密码
- 禁用存放文件的目录执行PHP脚本,防止上传木马文件(如果可以任意目录上传文件,那请您随便传马吧)
- 存放文件的目录以及文件名进行了可逆的加密,一定程度上加大了寻找文件目录的难度(对文件名进行url加密可以防止带有中文而造成的乱码)
一个有趣的功能
bing每日壁纸会每天更新一张质量不错的壁纸,结合官方给出的API,用php脚本实现获取图片的URL。将该图片来装饰主页。(可以当作博客背景,当然你的博客要有php环境)
bingpicture.php
1 |
|
部署方式
进入disk文件夹,docker compose up -d
端口8000
文件和目录结构
images是图片。
upload则是上传的总目录。
view放了一个html,用户的控制面板以及文件上传界面都包含了该文件。
vender是composers中JWT库的一些文件
然后就是核心的文件了,index.html页面引导进入start.html界面,实现了同一个页面进行登陆和注册功能(分别发送请求到两个php脚本实现与数据库交互)
登陆进去后就是control.php用户的控制面板,里面的左侧边有着为数不多的功能。
要慎用注销用户功能,因为用完啥也不胜了。
开发过程中遇到的苦难以及收获
困难
连接数据库的php函数,网上的源码都比较老,有些还在使用如下等函数进行连接数据库。
docker配置环境花了很久的时间,出现了很多的问题,总是解决了一个问题,后面还有新的问题在等我。
连接数据库并且初始化(创建库,导入表),php脚本创建文件夹,下载文件中访问并输出文件二进制流。都是涉及权限的设置。
收获
php扩展(mysqli库面向对象)。
对于身份认证(JWT,session)有了更深入的了解,本系统为了更加容易认证而选择了JWT。
php与数据库的共同使用来实现一些功能(注册,登陆)。
docker-compose.yml与Dockerfile搭配使用来实现镜像的生成以及运行容器。太懒了没去学卷来实现数据持久化。放个链接日后来学Docker——数据卷的概述和使用_数据卷的作用-CSDN博客
在Dockerfile运行Linux命令又练习了和学习了操作系统的知识,比如为文件夹和文件添加权限,换源等
了解学到了php预处理处理sql语句来防止sql注入。