2012-01-23 15 views
0

CodeIgniterを使用するデータベースからユーザーIDをセッションデータに追加しようとしています。セッションIDにユーザーIDを追加する(コード番号)

私はこのquestion見てきたし、それがために動作しませんでした私

コントローラーコード:

function validate_credentials() 
{  
    $this->load->model('users_model'); 
    $query = $this->users_model->validate(); 

    // if the users credentials validated... 

    if($query) 
    { 
     $user_id = $this->users_model->get_userID($this->input->post('email')); 

     /* 

     I dont need to worry about insecure code because all incoming data 
     is filtered (set in config.php) 

     */ 

     $data = array(
      'username' => $this->input->post('username'), 
      'is_logged_in' => true, 
      'user_id' => $user_id 
     ); 

     $this->session->set_userdata($data); 

     redirect('site/members'); 
    } 

    else 

    { 
     // incorrect username or password 
     $this->index(); 
    } 
} 

モデルコード:(列はのユーザーテーブルに「ユーザーID」と呼ばれますdb)

function get_userID($email){ 

    $this->db->where('email',$email); 
    $query = $this->db->get('users');  

    foreach ($query->result() as $row) 
    { 
     $user_id = $row->userID; 
    } 

    return $user_id; 

} 

ビューで配列を呼び出すと、ユーザーIDは表示されません。

<?php $this->session->userdata('user_id');?> 
+0

あなたに結果が表示されます?クエリ内の値がエコーを得るため、あなたはいけない小さなエラーに時々 $user_id$data をエコー試すようなあなたの問題を理解するのに役立ちますかあなたは、次のページのセッションで$データ配列を見ていませんか? – davidethell

+0

謝罪;元の投稿を更新しました。ビュー内から配列を呼び出すと、何も得られません。 session-> userdata( 'user_id');?> –

+0

他の変数は表示されますか? –

答えて

0

$ this変数は、コントローラ内のビューと同じではありません。あなただけのユーザーIDをしようと表示したい場合は...

$CI = &get_instance(); 
$CI->session->userdata('user_id'); 
+0

私は間違っていると思う、あなたはビューからインスタンスにアクセスすることができますそのインクルードファイルは、本質的にコントローラからのメソッドの一部です。あなたのステートメントは、CIスーパークラスとは別のライブラリやヘルパーに当てはまります。 –

+0

私は原則として同意しますが、実際には私は常にCIでこれを行う必要がありました。 – davidethell

+0

うーん、それは動作しません。私は誰がログインしているかに関係なく6を返します。 –

2

あなたのクエリをエコーする

<?php echo $this->session->userdata('user_id');?> 
0

てみてください:あなたはセッションにそのように参照したい場合は、このような$ CIインスタンスを取得する必要がありますそれは、常に正確な問題であり、何

関連する問題