2013-06-25 65 views
0

我開發了一個使用PHP的登錄頁面,供教師和學生用於登錄。 登錄後,我可以創建一個會話變量,讓他/她登錄,直到他退出。如何識別使用PHP和MySQL的用戶訪問權限?

$_SESSION['id']=12;

現在,當他們登錄的第一次,我希望他們進入的額外信息,向他們提供這取決於他是否有老師或學生不同的形式。

現在我的問題是如何識別他的會話期間的用戶類型? 我需要在Session變量中做什麼更改或需要存儲哪些額外信息? (我已經創建了所有老師和學生的默認密碼的數據庫,現在需要從他們輸入額外的信息,如我所述)。

+0

存儲一個標誌,告訴你該人是否是學生 – stackErr

+0

那麼這取決於你如何區分學生和教師...... – johannes

+1

可能的重複[基於角色的PHP訪問頁面](http:///stackoverflow.com/questions/1963455/role-based-access-to-pages-in-php) – Quentin

回答

2

如果您可以從數據庫中實時檢索用戶的信息,那麼最好的做法是(如果只有兩個角色而不是廣泛的權限)將角色字段添加到用戶表中。

使它成爲布爾值,以便0 =學生,1 =教師。

然後,您將使用if()聲明來檢查這一點,以決定要顯示哪種表單,例如,

if($user_data['role'] == 0){ 
    // Display student form 
} elseif($user_data['role'] == 1) { 
    // Display teacher form 
} 

你可以在$ _SESSION [「角色」]變量存儲這個,如果你不希望有每次重新加載頁面時從數據庫中獲取此。

+0

:是'$ user_data ['role']'一個包含獲取的用戶信息的數組?記住我有不同的表格,因爲它們有不同類型的數據。我將如何識別我必須從中獲取用戶角色的表格? work_around是我可以創建另一個表,其中包含user_id和user_role.But有沒有其他方式? –

+0

沒錯,$ USER_DATA會直接含有人體必需的用戶信息從數據庫中,像一個數組: $ USER_DATA [「名」] $ USER_DATA [「電子郵件」] 等。所以我們會做的是增加一個額外的在**學生**和**教師**表中稱爲「角色」。 在MySQL(或任何你正在使用的數據庫),在學生的表,你想使角色的默認值0 在教師表中,缺省值應爲1 還有更多有效的方法,但是如果你需要一些可行的方法,這是一種快速和骯髒的方法。 – SixteenStudio

0

有很多方法可以實現這一點。如果您將用戶標識存儲在會話中,則可以根據用戶標識查找用戶的詳細信息和權限。所以如果你在數據庫表中有一個user_type列,你可以存儲用戶是老師,學生,哥布林還是其他人,那麼你可以在你的PHP腳本中檢查這個值。

0

如果您需要保存信息:用戶名,密碼,老師或學生作爲會話中的標誌,您可以在登錄後執行流程,保存$ _SESSION ['username'],$ _SESSION ['password'] ,$ _SESSION ['flag'],然後,會話將作爲字符串,並保存在會話文件中。

+0

:我喜歡你的想法。所以我可以插入這三行登錄頁面來存儲三個會話變量。 –

+1

這是什麼意思?如果數據庫設置正確,您應該可以使用保存在$ _SESSION ['id']'字段中的_user ID_來獲取這些信息。除非這不是用戶ID_。 – War10ck

0

讓我們把這個容易, 我而改變我的數據庫中,添加 1爲老師和2命名爲「訪問」或「特權」一個多列,爲學生, 可以過濾狀態,即定義哪些菜單應該顯示出來。