2016-12-01 94 views
0

我有一個用戶表的角色字段存儲管理和Customer.I希望用戶具有管理員角色重定向到管理和其他重定向到index.php。登錄 - 不同的用戶角色

我不確定如何做到這一點,因爲我已經從註冊表單中加密了密碼,並且在兩個密碼匹配的情況下使用password_verify函數爲用戶提供了訪問權限。

function login_user() { 


if(isset($_POST['btnlogin'])) { 

    global $connection; 

    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $login_query = "SELECT * from users where email = '{$email}'"; 

    $confirm = mysqli_query($connection, $login_query); 




    while($row = mysqli_fetch_assoc($confirm)) { 

     $db_pass = $row['password']; 
     $first_name = $row['first_name']; 
     $last_name = $row['last_name']; 
     $contact_num = $row['mobile']; 
     $email = $row['email']; 
     $postcode = $row['postcode']; 
     $role = $row['role']; 

     $_SESSION['firstname'] = $first_name; 
     $_SESSION['lastname'] = $last_name; 
     $_SESSION['mob'] = $contact_num; 
     $_SESSION['email'] = $email; 
     $_SESSION['postcode'] = $postcode; 


    } 


    if(password_verify($password, $db_pass)) { 

        redirect("index.php"); 

      } 
     } 



} 

回答

1

使用簡單,如果條件:

if (password_verify($password, $db_pass)) { 
    if ($role == 'admin') { // or how do you store role value 
     redirect("admin.php"); 
    } else { 
     redirect("index.php"); 
    }   
} 

的進一步深入,你應該添加role$_SESSION了。 喜歡的東西:

// code goes here 
$_SESSION['postcode'] = $postcode; 
$_SESSION['is_admin'] = $role == 'admin'; 

你需要這樣做,以檢查是否有人誰直接訪問admin.php管理與否。

+0

我以前在這個網站上做過這個。在數據庫中,我有一個名爲steven with role = admin的用戶。該語句跳過第一個條件並轉到下一個條件,即index.php – steven

+0

該__should__工作。再次檢查數據庫中的值。特別檢查'role'字段的值。如果需要,請向您的問題發佈其他代碼。 –

+0

我檢查了我的數據庫,並且角色等於用戶Steven的Admin。而不是去管理它不斷去index.php ...太奇怪了。 – steven