2017-03-18 70 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'); 
     } 
    } 

} 

型号:

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

    return $query->result(); 

} 

有一些的Fileds在用户表:FNAME,LNAME,我要设置为会话。

谢谢你提前。

回答

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)首先你要给你的数据库查询从控制器:

$数据= $这个 - > Modal_name->的GetData();

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变量中。

3)将这个变量设置为会话值:

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

//在这里,你已经存储在会话中的所有返回的值。

4)您可以访问值的方式: //所有值:

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

//值对于一些特定的列:

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

//如果你想在会话中添加一些特定列:

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

最重要的是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'); 
     } 
    } 

}