2011-11-11 40 views
-4

考慮在下表中,當用戶登錄到產品頁面,如何避免用戶通過HTML代碼更改其他用戶的產品,因爲有產品桌子底下沒有userIdPHP保護用戶更改其他用戶發佈

Table user 
- userId 
- name 

Store 
- storeId 
- userId 

product 
- productId 
- storeId 
- price 
+2

你是什麼意思的HTML代碼? –

+0

如果在產品表下沒有userId,你怎麼能告訴他自己的產品? –

+0

@ Col.Shrapnel因爲產品表 – vzhen

回答

2

你不能。一個ownerId字段添加到表product,或添加包含userIdproductId一個userProduct表。

而且我不認爲用戶可以改變使用HTML代碼的產品在你的數據庫。

0

你想的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

2

如果你想限制它在每個用戶的基礎上,那麼它是不可能的,除非你改變你的模式結構有用戶和產品之間沒有直接的聯繫。如果你想這樣做在每個店的基礎上,即特定的存儲任何用戶可以編輯該商店則類似下面的查詢應該得到你的開始

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和用戶標識的任何產品這將使您能夠檢查該用戶是否與該產品的商店相關。

+0

是的,我想這是我想要的。 所以如果我用這種方式來限制它。可以嗎? 或者這是一個糟糕的設計? – vzhen

+0

那麼有很多方法可以進行訪問控制。我將這個查詢作爲您如何限制商店/用戶訪問產品的示例。不管你的建築是好還是不好,都不適合SO。請根據我的示例進行操作,如果在發佈其他問題時遇到任何特定問題。 – liquorvicar

0

您需要定義一個來回表以下屬性

表購買 - 用戶id - 的productId

而且從它的用戶購買的物品保存的信息。

原有的產品表不應該被用來保存用戶所做的更改。