2012-03-02 66 views
2

我已經創建了從數據庫中抽出用戶數據的功能數據庫中獲取用戶信息:坦克驗證 - 從

function user() 
{ 
    $user_id = $this->ci->session->userdata('user_id'); 

    if (!is_null($user = $this->ci->users->get_user_by_id($user_id, TRUE))) { 
     return $this->ci->users->get_user($user_id); //model 
    } 
    return FALSE; 
} 

我使用它像這樣在任何控制器:

$this->tank_auth->user()->field

對我來說不方便,所以我需要做什麼來獲取像這樣的用戶數據?

$this->user->field$this->tank_auth->user->field

我的第二個問題,關於上述功能是這樣的功能:

function is_admin() 
{ 
    if ($this->user()->who) 
    { 
     return $this->user()->who === "ADMIN"; 
    } 
    return FALSE; 
} 

它拋出的錯誤:

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object 

Filename: libraries/Tank_auth.php 

Line Number: 335 

(335線爲if ($this->user()->who))。

爲什麼會發生這種情況?這兩個函數都位於tank_auth的庫中,所以它應該可以正常工作,但它沒有。

我會很感激任何幫助嘗試。

+0

您可以將$ this-> tank_auth-> user()設置爲這樣的變量。 $ user = $ this-> tank_auth-> user();這將允許你像$ user-> field一樣訪問它的值。你想用is_admin方法完成什麼? – 2012-03-02 17:29:02

+0

@DougWallace我想檢查'$ this-> tank_auth-> user() - > who是否是ADMIN。 – Cyclone 2012-03-02 17:37:59

回答

0

如果此方法添加到users.php型號:

function get_user_profile_by_id($user_id){ 
    $this->db->where('user_id', $user_id); 

    $query = $this->db->get($this->profile_table_name); 
    if ($query->num_rows() == 1) return $query->row(); 
    return NULL; 
} 

可以再例如在USERPROFILE表中添加一個varchar領域UserClass的檢查如果用戶屬於某一類:

$profile = $this->users->get_user_profile_by_id($this->tank_auth->get_user_id()); 
if ($profile->userclass = "ADMIN") { 
... 
} 

希望有幫助。