考慮在下表中,當用戶登錄到產品頁面,如何避免用戶通過HTML代碼更改其他用戶的產品,因爲有產品桌子底下沒有userId
。PHP保護用戶更改其他用戶發佈
Table user
- userId
- name
Store
- storeId
- userId
product
- productId
- storeId
- price
考慮在下表中,當用戶登錄到產品頁面,如何避免用戶通過HTML代碼更改其他用戶的產品,因爲有產品桌子底下沒有userId
。PHP保護用戶更改其他用戶發佈
Table user
- userId
- name
Store
- storeId
- userId
product
- productId
- storeId
- price
你不能。一個ownerId
字段添加到表product
,或添加包含userId
和productId
一個userProduct
表。
而且我不認爲用戶可以改變使用HTML代碼的產品在你的數據庫。
你想的SQL查詢? 如果是 你可以說
$query = "SELECT * FROM products WHERE storeid IN (SELECT storeid FROM store WHERE userid = ".$logged_user.") "; //$logged_user holds the id of the user logged
如果你想限制它在每個用戶的基礎上,那麼它是不可能的,除非你改變你的模式結構有用戶和產品之間沒有直接的聯繫。如果你想這樣做在每個店的基礎上,即特定的存儲任何用戶可以編輯該商店則類似下面的查詢應該得到你的開始
SELECT
[product info]
FROM
product p
INNER JOIN
store s ON p.storeId=s.storeId
INNER JOIN
user u ON s.userId=u.userId
WHERE
p.productId = [productId] AND
u.userId = [userId]
給定的productId和用戶標識的任何產品這將使您能夠檢查該用戶是否與該產品的商店相關。
是的,我想這是我想要的。 所以如果我用這種方式來限制它。可以嗎? 或者這是一個糟糕的設計? – vzhen
那麼有很多方法可以進行訪問控制。我將這個查詢作爲您如何限制商店/用戶訪問產品的示例。不管你的建築是好還是不好,都不適合SO。請根據我的示例進行操作,如果在發佈其他問題時遇到任何特定問題。 – liquorvicar
您需要定義一個來回表以下屬性
表購買 - 用戶id - 的productId
而且從它的用戶購買的物品保存的信息。
原有的產品表不應該被用來保存用戶所做的更改。
你是什麼意思的HTML代碼? –
如果在產品表下沒有userId,你怎麼能告訴他自己的產品? –
@ Col.Shrapnel因爲產品表 – vzhen