2012-03-02 7 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。上記機能に関する

私の2番目の質問は、この関数である。

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のライブラリに置かれているので、うまく動作するはずですが、うまくいきません。

ご協力いただきありがとうございます。

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を追加し、ユーザーがして、特定のクラスに属しているかどうかを確認することができます:あなたはusers.phpモデルに、このメソッドを追加した場合

+0

$ this-> tank_auth-> user()をこのような変数に設定することができます。 $ user = $ this-> tank_auth-> user();あなたは$ user-> fieldのような値にアクセスできます。 is_adminメソッドで何を達成しようとしていますか? –

+0

@DougWallace '$ this-> tank_auth-> user() - > who'がADMINであるかどうかをチェックしたいと思います。 – Cyclone

答えて

0

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

希望があれば