我是一名學習PHP和MySQL的高中學生。我正在嘗試創建一個簡單的照片共享網站,允許用戶註冊並開始上傳圖片。每個用戶都有一個顯示其所有照片的配置文件。簡單的照片分享網站:如何爲多個用戶及其照片構建MySQL數據庫
我現在只有一個表,被稱爲「用戶」:用戶名,電子郵件,密碼
我應該如何建立一個表的照片?我如何鏈接到每張圖片的文件路徑?
謝謝
我是一名學習PHP和MySQL的高中學生。我正在嘗試創建一個簡單的照片共享網站,允許用戶註冊並開始上傳圖片。每個用戶都有一個顯示其所有照片的配置文件。簡單的照片分享網站:如何爲多個用戶及其照片構建MySQL數據庫
我現在只有一個表,被稱爲「用戶」:用戶名,電子郵件,密碼
我應該如何建立一個表的照片?我如何鏈接到每張圖片的文件路徑?
謝謝
第一個問題是你在哪裏存儲用戶的照片?我會推薦這:
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
下用戶1將登錄的用戶名,照片會自動添加和myduck.jpg會從數據庫中拉出。
但是,這會打開兩個洞: - 盜鏈 - 如果有人知道用戶名和照片標題,他們可以在未獲得許可的情況下訪問照片。
在user表創建一個名爲ID列(這應該不會改變) 您通常使用類似的INT AUTOINCREMENT號這使數據庫自動分配它,這應該被標記爲PRIMARY KEY
創建一個表名爲照片
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
要選擇所有照片的用戶名「鮑勃」,你會做這樣的事情
SELECT Photos.Id, Photos.Filename
FROM Photos
JOIN Users ON Photos.UserId=Users.Id
WHERE Users.username = 'bob'
不要爲每個用戶創建一個表,這不是良好的數據庫設計。以第三種正常形式閱讀。你不應該在每次用戶註冊時創建新表格 – bumperbox
我意識到這不是一個好的設計,而且我也不會在網絡應用程序中使用它,但他是一個初學者,所以我認爲這會更簡單/更簡單執行。 – citruspi