Codeigniter 用户数据 [英] Codeigniter User's Data
问题描述
大家好,我有一个 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');
}
}
推荐答案
您的控制器存在基本问题
会话数据问题: 在您的控制器中,您将所有数组数据存储在 CodeIgniter 会话中:
'user_data' 将像数组键一样工作,所有其他数组将被分配为键数据;
$this->session->set_userdata('user_data', $user_data);
并且您使用 $this->session->userdata('logged_in')
检索/检查会话数据和$this->session->userdata('username')
,我的朋友错了.您可以通过 $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']
...
因为会话就像;
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"才能获取数据
我想与大家分享的一件事,始终仔细阅读文档和手册.相信我,如果你在开始之前阅读,你的代码会更好更干净......哈哈哈哈......;) :|
这篇关于Codeigniter 用户数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!