我是一名学习 PHP 和 MySQL 的高中生。我正在尝试创建一个简单的照片共享网站,允许用户注册并开始上传图片。每个用户都有一个显示他们所有照片的个人资料。
我目前只有一张表,称为“用户”:用户名、电子邮件、密码
我应该如何为图片设置表格?以及如何链接到每张图片的文件路径?
谢谢
我是一名学习 PHP 和 MySQL 的高中生。我正在尝试创建一个简单的照片共享网站,允许用户注册并开始上传图片。每个用户都有一个显示他们所有照片的个人资料。
我目前只有一张表,称为“用户”:用户名、电子邮件、密码
我应该如何为图片设置表格?以及如何链接到每张图片的文件路径?
谢谢
在您的用户表上创建一个名为 Id 的列(这永远不会改变)您通常为此使用类似 INT AUTOINCREMENT 编号的内容,因此数据库会自动分配它,并且应将其标记为 PRIMARY KEY
创建一个名为 photos 的表
Table photos
Id = autoincrement primary key
UserID = int (you can set this up as a foreign key, but to keep it simple, just make it indexed)
Title = varchar
Info = varchar
Filename = varchar
Table Photos
Id | UserId | Title | info | Filename | (add other columns to suit)
------------------------------------------------------------
1 | 1 | Duck | xyz | duck.jpg |
2 | 1 | Cat | xyz | cat.jpg |
3 | 2 | Mouse | xyz | mouse.jpg |
从上面的数据可以看出,照片 1 和 2 属于用户 1,照片 3 属于用户 2
要为用户名“bob”选择所有照片,您可以执行以下操作
SELECT Photos.Id, Photos.Filename
FROM Photos
JOIN Users ON Photos.UserId=Users.Id
WHERE Users.username = 'bob'
第一个问题是您将用户的照片存储在哪里?我会推荐这个:
Table (User's):
Username | Password | Email
---------------------------
user1 | fdgfdg | fdfgdf
user2 | ffdgfd | fgdfgf
user3 | dgfdgg | fgdgdd
然后,每当用户注册时,使用该用户的姓名和标题为照片的子目录创建一个文件夹。
为每个用户创建一个表。
Table user1
Photo | Title | info
----------------------------
duck.jpg | My Duck! | fgdf
cat.png | Le Cat | dfgd
然后,当用户登录时,列出所有标题并将它们动态链接到照片。
所以我会
My Duck --> http://mysite.com/user1/photos/myduck.jpg
其中 user1 是登录用户名,照片将自动添加,myduck.jpg 将从数据库中提取。
但是,这会带来两个漏洞: - 盗链 - 如果有人知道用户名和照片标题,他们可以在未经许可的情况下访问照片。