2014-04-07 31 views
2

在初始化SESSION數據並定義變量$ auth_level後,我在我的所有頁面上使用下面的代碼。這是安全使用。用戶級別管理

我用它來決定顯示不同級別的用戶。

<?php 
    if($auth_level == 'basic'){ 
     // auth_level basic 
     if (!isset($_SESSION['username'])) { 
      header('Location: login.php'); 
     } 
    } else if ($auth_level == 'admin'){ 
     // auth level admin 
     if (!isset($_SESSION['username']) || $_SESSION['role'] != 2) { 
      header('Location: login.php'); 
     } 
    } else { 
     // auth level admin assumed for security 
     if (!isset($_SESSION['username']) || $_SESSION['role'] != 2) { 
      header('Location: login.php'); 
     } 
    } 
?> 
+2

如果你不在'header('Location:...)'之後放一個'exit','腳本不會停在那個點。順便說一句,這是offtopic,因爲http://codereview.stackexchange.com/ – DanFromGermany

+0

我可能還沒有足夠的咖啡......但它看起來像你的檢查認證級別,然後檢查,看看用戶名是否設置在auth_level == '基本'塊。你應該先檢查用戶名嗎? –

+0

爲什麼說「如果'$ auth_level'是」admin「,那麼這樣做,但如果它是其他東西,那麼做的完全一樣嗎?爲什麼不簡單地做'if(basic){} else {}'? – h2ooooooo

回答

1

這其中可能有幫助:

https://stackoverflow.com/a/1225668/1437605

不久說:你應該存儲在$ _SESSION一些更多的信息來區分客戶端(如IP等),否則,我會得到你的cookie與你的sessionId,並根據你如何得到'用戶名'和'角色'值可以正確認證。