Codeigniter用户数据 [英] Codeigniter User's Data

查看:124
本文介绍了Codeigniter用户数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我有一个 User 控制器和 User_model 模型。我希望能够在用户登录后从数据库中检索并显示登录用户的电子邮件和电话号码,并显示到视图。如果能解决该问题,我将不胜感激。可以编写代码来证明我会很高兴。

Hi guys I have a User controller and User_model model. I want to be able to retrieve and display a logged in users email and phone number from the database to a view after the user is logged in. any idea how I could go about this would be appreciated and if codes could be written to demonstrate I would be very happy.

模型

   public function login($username, $password){
        //validation
        $this->db->select('id, email, username');
    $this->db->where('username', $username);
    $this->db->where('password', $password);
    $this->db->where('status', 1);
    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row(0)->id;
    } else {
        return FALSE;
    }
    }

        public function get_user($username){

            $this->db->where('username', $username);  
            $query = $this->db->get('users');
            return $query->result();
}

控制器:

 public function login(){
    $data['title'] = 'Login';

    $this->form_validation-> set_rules('username', 'Username', 'required');
    $this->form_validation-> set_rules('password', 'Password', 'required');

    if($this->form_validation->run() === FALSE){

    $this->load->view('templates/header');
    $this->load->view('users/login', $data);
    $this->load->view('templates/footer');
    } else {

        // fetching user
    $username = $this->input->post('username');
        //Encrypted password
    $password = md5($this->input->post('password'));

    //login user
    $user_id = $this->user_model->login($username, $password);

    if($user_id){
        //creating session
        $user_data = array(
            'user_id' => $user_id,
            'username' => $username,
            'logged_in' => TRUE,
        );

   $this->session->set_userdata('user_data',$user_data);            
                // Set message to be sent
    $this->session->set_flashdata('user_login', 'Welcome');
    redirect('posts');
    } else {



        // Set message to be sent
    $this->session->set_flashdata('login_fail', 'Login Failed');
    redirect('users/login'); 
    }

    }

}

public function get_user()
  {

    if($this->session->userdata('logged_in')){
        $username = $this->session->userdata('username');
        $data['results'] = $this->user_model->get_user($username);
        $this->load->view('templates/header');
        $this->load->view('users/login', $data);
        $this->load->view('templates/footer');
    }

  }


推荐答案

控制器中有基本问题

There is basic problem in your Controller


会话数据问题: 在控制器中,您将所有数组数据存储在CodeIgniter会话中:

'user_data'就像数组键一样工作,所有其他数组都将分配为键数据;

$this->session->set_userdata('user_data', $user_data);

,然后使用 $ this->会话-> userdata('logged_in') $ this->会话-> userdata('用户名') ,我的朋友错了。您可以通过 $ this-> session-> userdata('user_data')['username'] 获取用户数据会话 $ this-> session-> userdata ['user_data'] ['username'] ...

and you retrieving/checking the session data by using $this->session->userdata('logged_in') and $this->session->userdata('username'), It's wrong my friend. You can get user data session by $this->session->userdata('user_data')['username'] or $this->session->userdata['user_data']['username'] ...


因为会话类似于;

Because the session would be like;



Array
(
    [__ci_last_regenerate] => 1499791562

    // This is the array key 'user_data' where your array data stores

    [user_data] => Array
        (
            [user_id] => 1
            [username] => scott
            [email] => scott.dimon@example.com
            [phone_number] => 1234567890
            [first_name] => Scott
            [logged_in] => 1
        )

)



因此,您必须在会话中使用'user_data'来获取数据



我想与大家分享的一件事, 请务必仔细阅读文档和手册。相信我,如果您在开始之前就读过,那么您的代码会更好,更干净...哈哈哈哈哈..;):|

So, you have to have use 'user_data' with session to get your data

One thing I would like to share with everyone, Always Read The Docs and manual Carefully. Believe me if you read before the start, your code would be more nicer and cleaner... Ha ha ha ha ha.. ;) :|

这篇关于Codeigniter用户数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆