I want to display the name of the registered user on other page. I can display the username, user_id, but I want to display the name of registered user. This is my controller:
code
:
public function login() {
$data['title'] = 'Sign In';
$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 {
//Get username
$username = $this->input->post('username');
//Get and encrypt password
$password = md5($this->input->post('password'));
//Login user
$user_id = $this->user_model->login($username, $password);
if($user_id) {
//Create session
$user_data = array(
'user_id' => $user_id,
'username' =>$username,
'logged_in' => true
);
$this->session->set_userdata($user_data);
//Set message
$this->session->set_flashdata('user_loggedin', 'You are now logged in');
redirect('dashboard/index');
}
else {
//Set message
$this->session->set_flashdata('login_failed', 'Login is invalid');
redirect('users/login');
}
}
}
This is my model :
code
public function login($username, $password) {
//Validate
$this->db->where('username', $username);
$this->db->where('password', $password);
$result = $this->db->get('users');
if($result->num_rows() == 1){
return $result->row(0)->id;
}
else {
return false;
}
}
This is my view:
code
<p>Welcome, <?php echo $this->session->username ?> </p>
I have tried the same for name, even adding in the user_data array above. But, somehow it only works for username, user_id and logged_in value.
I assume you have a column 'name' in your DB.
In your model
return $result->row();
instead of
$result->row(0)->id;
set session in controller to add name in session
$user_data = array(
'user_id' => $user_id->id,
'name' =>$user_id->name,
'username' =>$username,
'logged_in' => true
);
On your view
<p>Welcome, <?php echo $this->session->name ;?> </p>