我是一名学习PHP和MySQL的高中生。我正在尝试创建一个简单的照片共享网站,允许用户注册并开始上传图像。每个用户都有一个显示所有图片的个人资料。
我目前只有一个名为“用户”的表:用户名,电子邮件,密码
我应该如何为照片设置表格?我如何链接到每个图片的文件路径?
由于
答案 0 :(得分:3)
在您的用户表上创建一个名为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'
答案 1 :(得分:1)
第一个问题是你在哪里存储用户的照片?我会推荐这个:
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。
然而,这开辟了两个漏洞: - Hotlinking - 如果有人知道用户名和照片标题,他们可以在未经许可的情况下访问照片。