简单照片共享站点:如何为多个用户及其照片构建MySQL数据库

时间:2012-05-08 18:42:55

标签: php mysql database-schema photos

我是一名学习PHP和MySQL的高中生。我正在尝试创建一个简单的照片共享网站,允许用户注册并开始上传图像。每个用户都有一个显示所有图片的个人资料。

我目前只有一个名为“用户”的表:用户名,电子邮件,密码

我应该如何为照片设置表格?我如何链接到每个图片的文件路径?

由于

2 个答案:

答案 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 - 如果有人知道用户名和照片标题,他们可以在未经许可的情况下访问照片。