2010-08-03 89 views
0

我打算使用兩個表(即guest和employee)來控制哪個用戶可以訪問哪個頁面。控制不同的訪問級別

猜測可以註冊一個帳戶,而僱員不能。一名員工的賬戶只能由系統管理員分配。

這是我剛剛發現了一個問題:

假設用戶A是一個員工,有「login001」作爲用戶名和「密碼」的密碼。

現在,一個猜測來到網站,並申請一個用戶名'login001'和'密碼'作爲密碼。

然後,用戶B可以訪問一些內部網站B/C他/她選擇了與員工相同的用戶名/密碼。

這是我修復了這個問題:

方法一: 每當應用用戶名(無關緊要的猜測或員工),兩個表的猜測和員工應進行檢查,以確保沒有重複。

方法二: 將猜測和員工表合併爲人員表。但是,爲了猜測,可以將user_type指定爲GUEST,對於員工,可以將user_type指定爲EMPLOYEE。

我不知道上述方法是否有意義。如果兩者都不是好的解決方案,請給我一些指導,以便採取一些最佳做法。

我沒有使用任何框架或面向對象來實現我的PHP腳本。

謝謝

回答

2

我建議您將兩個憑證表合併爲1.然後,您可以創建一個guestemployee表,並引用憑證表。這樣你可以存儲關於這兩者的更多信息。

但是,您可能想問自己,客人和員工之間的區別是什麼。如果唯一的區別是訪問控制,您可以在憑證表中添加一個額外的列,以定義記錄是來賓記錄還是員工記錄。

最後,將您的憑證合併到一個表格後,您應該在您的用戶名列中添加一個唯一約束。這將確保只有一個帳戶可以擁有像login001joeshmoe這樣的用戶名。

+0

請注意,只有將來賓和員工存儲在同一個表中時,唯一約束纔有效。 – jmz 2010-08-03 17:43:35

+0

@jmz - 是的,我應該澄清,添加唯一約束假定有1個憑證表。 – 2010-08-03 17:46:42

+0

Hello Jones, 根據你的建議,我覺得表格的框架應該如下僞代碼: PersonTable { person_id: varchar(20) primary key, credential: employee|guest } 謝謝 – q0987 2010-08-03 19:39:15

1

你或許應該把所有的登錄一起在一個表中,因爲他們要分享了很多相同的列。那些重複的列不是理想的數據分析方法。

使用方法二,它可以最大限度地減少您的頭痛,並且數據更容易理解。