PHP在线相册项目
【功能分析】
本项目具体实现功能:
实现外网访问功能。
可以重命名相册、相片
可以移动相片到新的相册
支持最大100m的图片上传,将图片保存到服务器,并提供一个URL来访问。
使用MySQL数据库保存相册数据(相册结构,图片保存地址等)
在一个相册内可以创建子相册,默认最多支持五级嵌套,且能够限制最多层级数。
在相册中显示图片列表时,为避免图片文件过大造成页面打开缓慢,只显示缩略图。
在浏览图片时,可以通过“上一张”,“下一张”按钮切换到本相册内的其他图片。
支持相册和图片的删除,在删除相册时只允许删除空相册。
可以将相册内的某张图片设置为相册封面。
可以通过文件名来搜索相册中的图片。
【系统总体框架】
目录结构划分:
| 目录 | 解释 |
|---|---|
| common | 保存公共的 PHP 文件 |
| css | 保存项目的 CSS 文件 |
| js | 保存项目的 JavaScript 文件 |
| view | 保存项目的 HTML 文件 |
| uploads | 保存用户上传的图片 |
| thumbs | 保存图片的缩略图 |
| covers | 保存相册的封面图 |
| 文件 | 解释 |
| index.php | 提供相册的创建、展示、删除以及图片上传功能 |
| show.php | 提供图片查看功能 |
| search.php | 提供图片搜索功能 |
数据库设计:
1)相册表(album):
| 字段名 | 字段说明 | 字段类型 | 是否允许为空 | 备注 |
|---|---|---|---|---|
| id | 相册 id | int | 否 | 主键(自增) |
| pid | 上级相册 id | int | 否 | |
| path | 相册路径 | text | 否 | |
| name | 相册名 | varchar | 否 | |
| cover | 封面图地址 | varchar | 否 | |
| total | 图片数 | int | 否 |
2)图片表(picture):
| 字段名 | 字段说明 | 字段类型 | 是否允许为空 | 备注 |
|---|---|---|---|---|
| id | 图片 id | int | 否 | 主键(自增) |
| pid | 所属相册 id | int | 否 | |
| name | 图片名 | varchar | 否 | |
| save | 保存地址 | varchar | 否 |
【功能实现】
图片移动功能实现:
在index.html中添加button提交按钮以及遍历相册的select选项框
注意!select选项框提交数据不在option选项中,会给到select所以name=”action_pid”写在select中
在index.php中写具体提交前的格式规范以及调用具体移动实现
在album.php中写具体实现:
然后调用相册查找确保相册存在
如果相册存在执行
最后调用tip提示成功一下
图片重命名功能实现:
在index.html中添加一个input来接收重命名以及按钮来提交到重命名函数
再到index.php中写具体提交前的格式规范以及调用具体改名实现。
在album.php中写具体实现:
接下来先调用查找图片功能函数确保图片存在
如果图片存在执行db_exec()函数来返回结果
最后调用tip提示函数显示成功结果
相册重命名实现同理
图片搜索功能实现:
在HTML框架上创建form表单实现搜索的上传
在后台实现上引入项目的初始化文件并接收参数,代码如下。
利用 SQL 语句中的 LIKE 操作符进行搜索即可。需要注意的是,由于 LIKE 条件可以用“%”“_”进行模糊搜索,为了避免用户输入的内容和这些字符冲突,应该将这些字符进行转义。在 common\db.php 中编写 db_escape_like()函数,具体代码如下。
上述代码实现了转义用户可能输入的特殊字符“%”“_”和“\”。其中,“\”在 PHP 单引号字符串中 书写时,为了避免将右边的单引号转义,需要在“\”前面加一个“\”,而实际上只保存了一个“\”。
显示搜索结果的html:
前往PHP在线相册项目
欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1701220998@qq.com