2011-08-13 33 views
2

如何將多個會話變量發送到頁面?根據用戶訪問級別重定向到不同頁面的PHP登錄頁面

比如我有一個驗證用戶的電子郵件和密碼,訪問級別(管理員,教師,學生)存儲在數據庫訪問權限授予相應地student.php,admin.php的,faculty.php

一個頁面的login.php

在student.php,admin.php和faculty.php頁面中,我設置了會話塊,用於檢查從前一頁收到的用戶級別,並相應地允許或拒絕訪問。

到目前爲止,這工作正常,但現在我想爲每個用戶創建特定的頁面,我需要檢查用戶級別(管理員,用戶,教師>已被選中)+他們特定的用戶ID或電子郵件使用我可以生成照顧他們的具體內容..

所以回到我的問題,有沒有辦法發送多個變量到頁面

或者更重要的是,如果我沒有在正確的軌道思考是否有更好的方式來做到這一點?

非常感謝,

+1

你已經檢查了他們的等級,爲什麼不把不同的頁面放在這些檢查後面呢?或者還有別的嗎?如果可能的話,可能會幫助顯示一些相關的代碼。 – Veger

+0

不要忘記不僅要檢查重定向的授權,還要檢查不同的頁面本身。 – Gumbo

回答

3

是的。只需聲明$_SESSION作爲一個數組。

$_SESSION["uid"] //User ID (mail whatever) 
$_SESSION["access"] //Admin, student, teacher etc. 

Manual Reference

+0

我試過了,但在目標頁面上>我不認爲他們正在接收它..除非我做錯了什麼..這裏是login.php頁面上的代碼 – ABI

+0

if(($ role =='admin') &&($狀態== '活性')){ \t \t \t //設置的用戶名會話變量 \t \t \t $ _SESSION [ '角色'] = $作用; \t \t \t $ _SESSION ['fname'] = $ fname; \t \t \t $ _SESSION ['email'] = $ email; \t \t \t //跳轉到受保護頁面 \t \t \t header('Location:securedpage。PHP'); \t \t \t} \t \t \t \t \t \t否則,如果(($角色== '學生')&&($狀態== '活躍')){ \t \t \t //設置用戶名會話變量 \t \t \t $ _SESSION ['role'] = $ role; \t \t \t $ _SESSION ['fname'] = $ fname; \t \t \t $ _SESSION ['email'] = $ email; \t \t \t //跳轉到受限頁面 \t \t \t header('Location:usrsecuredpage.php'); \t \t \t} – ABI

+0

請確保您正在使用'start_session()',並且在發送任何輸出之前。另外,'$ role'和'$ status'可能不會在新頁面上定義,也可以將它們放在數組中('$ _SESSION ['role']')。在最後一個註釋中,換行符不適用於註釋,因此請確保使用''來表示註釋中的代碼:) –

0

使用會話創建用戶特定網頁的最佳方式?

會話(以及更好的安全cookie)僅適用於重新標識請求用戶。

不要將角色賦予客戶端。應用程序應始終在傳遞頁面或執行請求之前檢查用戶的角色。您應該嚴格避免將值傳遞給客戶端,這些值可以被操縱以獲得更高的權限,或者讓用戶看到或操縱其他用戶的數據。

相關問題