2017-03-18 9 views
1

私はセッションでユーザデータを設定したいと思います。私はログインフォームから取得しているので、セッションデータで電子メールを設定することができます。 しかし、私はデータベースからすべての詳細を取得し、セッションに設定する方法を知らない。ここに私のコードcodeigniterセッションユーザデータ設定

コントローラーです:

public function login_validation() { 

    // get form input 
    $email = $this->input->post("email"); 
    $password = $this->input->post("password"); 

    // form validation 

    $this->load->library('form_validation'); 
    $this->form_validation->set_rules("email", "Email-ID", "trim|required"); 
    $this->form_validation->set_rules("password", "Password", "trim|required"); 

    if ($this->form_validation->run() == FALSE) 
    { 
     // validation fail 
     $this->load->view('admin/login'); 
    } 
    else 
    { 
     // check for user credentials 
     $this->load->model('site_model'); 
     $uresult = $this->site_model->get_user($email, $password); 
     $data["results"]=$this->site_model->getdata_user($email); 
     foreach ($data as $row) { 
      $fname = $row['fname']; 

     } 

     if (count($uresult) > 0) 
     { 

      $data = array(      
       'email' => $email, 
       'fname' => $fname, 
       'lname' => $lname, 
       'pre'=>$pre, 
       'is_logged_in' => 1       
      ); 

      // set session 
      $this->session->sess_expiration = '0';// will not expire 
      $this->session->set_userdata($data); 

      redirect("admin/index"); 
     } 
     else 
     { 
      $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>'); 
      $this->load->view('admin/login'); 
     } 
    } 

} 

モデル:私はセッションに設定したいFNAME、LNAME:一部のユーザーテーブルのfiledsがある

function getdata_user($email) 
{ 
    $query= $this->db->get_where("users", array("email"=>$email)); 

    return $query->result(); 

} 

ありがとうございます。

答えて

0

クエリビルダークラスを見てください。 https://www.codeigniter.com/userguide3/database/query_builder.html

このリソースを使用すると、データベース内の列を読み取るコードを作成できるはずです。

where句で列を選択する方法の例。すべての

$this->db->select('fname, lname'); 
$this->db->from('users'); 
$this->db->where('email', $email); 
$query = $this->db->get(); 
+0

を動作しません、セッションライブラリをロードすることを忘れないでくださいことができます私のコードで私を助けてください。私はcodeigniterを初めて使っています。 –

+0

モデルパーツを手に入れました。このデータをコントローラに渡してセッションに設定する方法。私のコードを見てください。ありがとうございます –

+0

あなたはクエリ変数から読んでいますか? – Webbanditten

0

1)まず、あなたは、コントローラからあなたのDBクエリを呼び出します。

$データ=の$ this - > Modal_name->函();

2)モーダル一部はここにある:上記のコードによって

$this->db->select('fname, lname'); 
$this->db->from('users'); 
$this->db->where('email', $email) ; 
$query = $this->db->get(); 
return $query->result_array(); 

//あなたは配列形式で欲しい電子メールIDを持つすべてのエントリを取得すると、アレイコントローラに戻り、保存されます$ data変数に格納します。 //ここでは、セッション内のすべての戻り値を格納している

$this->session->set_userdata('all_data', $data); 

3. )セッション値としてこの変数を設定します。

4)あなたが値にアクセスすることができます方法:あなたがしたい場合は

$this->session->userdata['all_data']['column_name']; 

//:いくつかの特定の列に

$this->session->userdata('all_data'); 

//値: //すべての値をいくつか、セッションに特定の列を追加します。

$this->session->set_userdata('all_data',$data['column_name']); 

最も重要なのTHI NG:それ以外の場合は

0

この

セットモデルの機能を試してみてください

 public function getdata_user($email) 
{ 
    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->where('email', $email) ; 
    $query = $this->db->get(); 
    return $query->result(); 
} 
コントローラ機能で

public function login_validation() { 

    // get form input 
    $email = $this->input->post("email"); 
    $password = $this->input->post("password"); 

    // form validation 

    $this->load->library('form_validation'); 
    $this->form_validation->set_rules("email", "Email-ID", "trim|required"); 
    $this->form_validation->set_rules("password", "Password", "trim|required"); 

    if ($this->form_validation->run() == FALSE) 
    { 
     // validation fail 
     $this->load->view('admin/login'); 
    } 
    else 
    { 
     // check for user credentials 
     $this->load->model('site_model'); 
     $uresult = $this->site_model->get_user($email, $password); 
     $results=$this->site_model->getdata_user($email); 

      if ($results) { 
    $sess_array = array(); 
    foreach ($results as $row) { 
     $sess_array = array(
      'email' => $row->email, 
      'fname' => $row->fname, 
      'lname' => $row->lname, 
      'pre' => $row->pre, 
      'id' => $row->id, 
      ); 
     $this->session->set_userdata('$sess_array); 
    } 
    return TRUE; 


      redirect("admin/index"); 
     } 
     else 
     { 
      $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>'); 
      $this->load->view('admin/login'); 
     } 
    } 

} 
関連する問題