我有這個簡單的MySQL表,我把它叫做data_table
:使用PHP訪問MySQL數據庫中的某些數據的用戶權限?
/--------------+------------------+-------------------\
+ data_id + data_content + addition_content |
+--------------+------------------+-------------------+
+ data_1 + data_content_1 + comment_for_1 |
+ data_2 + data_content_2 + comment_for_2 |
+ data_3 + data_content_3 + comment_for_3 |
+ + + |
+ ... + ... + ... |
+ + + |
+ data_n + data_content_n + comment_for_n |
\--------+-----+------------------+-------------------/
爲了幫助用戶可以將他們的數據提交給我的數據庫,我創建了一個簡單的HTML表單(用PHP核心),方便數據提交。
對於從該表(data_table
)獲取數據,我已經使用這個查詢(從my_query.php
):
// ...
$var_get = $_GET['url'];
$query_1 = mysql_query("SELECT * FROM `MyDB` WHERE `data_id` = '{$var_get}'");
while ($query_2 = mysql_fetch_array($query_1))
{
echo $query_2['x_2'];
}
// ...
任何人都可以看到任何結果(從echo $query_2['x_2'];
),當他們訪問my_query.php
頁用值爲$_GET[];
。
現在,我不想讓所有人都可以訪問我網站上的任何數據。因此,我決定只允許某些用戶的訪問權限;而且,我有一個想法:
- 我將創建一個新的MySQL表(
user_table
):
/--------------+------------------+-------------------\ + user_id + user_name + user_password | +--------------+------------------+-------------------+ + user_1 + user_name_1 + password_1 | + user_2 + user_name_2 + password_2 | + user_3 + user_name_3 + password_3 | + + + | + ... + ... + ... | + + + | + user_n + user_name_n + password_n | \--------+-----+------------------+-------------------/
- 然後,我將一個新的數據列(
data_owner
)添加到存在的表(data_table
)。每條記錄(數據行)將有一個所有者;這所有者是已存在的用戶(在user_table
)誰提交了他們的數據到我的網站。 - 最後,我會添加一個新的數據列(
allowed_user
)到現有的表(data_table
)。每條記錄(數據行)都會有一些允許的用戶;這些允許用戶是允許看到結果(來自echo $query_2['x_2'];
)的已存在用戶(在user_table
)。如果某人不是允許的用戶(來自某個記錄),他們將不會看到真實的數據。
我的想法是不是壞了?
對不起,編程不是我的工作;所以,我的編程技巧有一些限制。你能舉個例子嗎?
如果擁有「允許的用戶」屬性集的用戶將可以訪問其數據和他的數據,那麼聲音OK。用戶無法訪問其他人的數據? – PaulH
請務必在公共站點**防止SQL注入** http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – PaulH
而不是在PHP中的while循環中進行過濾,可以考慮將過濾器添加到SQL語句的WHERE中,這樣會更有效。 – PaulH