2017-06-18 172 views
-3

我的代碼使用登錄類進行身份驗證。我需要一個基於用戶的登錄信息(角色)的變量,它將管理員用戶指向一個單獨的頁面。 在這裏,我試圖把我的登錄類中的$role變量:PHP根據用戶的「角色」登錄

private function getUserRole($role) 
{ 
    if ($this->databaseConnection()) { 
     $query_user = $this->db_connection->prepare('SELECT role FROM users WHERE user_name = :user_name'); 
     $query_user->bindValue(':role', $role, PDO::PARAM_STR); 
     $query_user->execute(); 
     return $query_user->fetchObject(); 
    } else { 
     return false; 
    } 
} 

這裏我index.php頁面上,我試圖直接登錄交通:

require_once('classes/Login.php'); 
$login = new Login(); 
if ($login->isUserLoggedIn() == true and $login->getUserRole() == 'admin'){ 
    include("views/logged_in.html"); 
} else { 
    include("views/not_logged_in.php"); 
} 

我是新來使用登錄類我正在使用我現有的代碼,所以任何幫助或建議將不勝感激。

+0

我沒有看到你使用':命名的佔位符user_name'在你公佈;你只使用':role'。 –

回答

0

你需要傳遞user_name,而不是role

private function getUserRole($user_name) 
{ 
    if ($this->databaseConnection()) { 
     $query_user = $this->db_connection->prepare('SELECT role FROM users WHERE user_name = :user_name'); 
     $query_user->bindValue(':user_name', $user_name, PDO::PARAM_STR); 
     $query_user->execute(); 

     return $query_user->fetchObject(); 
    } else { 
     return false; 
    } 
} 

的index.php

require_once('classes/Login.php'); 

$login = new Login(); 

if ($login->isUserLoggedIn() == true and $login->getUserRole($user_name) == 'admin') { 
    include("views/logged_in.html"); 
} else { 
    include("views/not_logged_in.php"); 
} 
+0

我有一列「user_name」,但我的數據庫中也有一列「角色」。我的意圖是引用用戶登錄的角色列,並使用if語句對其進行檢查,以查看他們的角色是否爲「admin」。 login.php中的函數處理登錄,但我不確定如何根據用戶的角色檢查類「login」的實例。你可以看到一個函數「isUserLoggedIn()」檢查它們是否已經登錄,但是如何編寫一個可以在我的index.php頁面上用同樣的if語句檢查的函數? – Jerrad

+0

我可能需要從login.php添加更多代碼,以便您可以看到我正在處理的內容。在login.php中創建函數並在index.php中引用它就像你說的那樣不起作用。它不會讓我通過登錄屏幕,這意味着如果角色被引用爲「admin」,它不會通過我的if語句讓我通過。 – Jerrad