[eluser]elektra[/eluser]
Hi I'm fairly new to codeigniter. All I want is to retrieve few selected user data so I could echo them out when they logged in for user profile and stuff. Really need help and running out of time. Thank you.
Controller
Code: $query = $this->User_model->validate_login();
if($query)
{
$data['user_session'] = $this->session->userdata('user');
redirect('users/dashboard', $data);
}
else
{
redirect('users/index');
}
}
Model
Code: public function validate_login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
$row = $query->row();
$userdata = array (
'name' => $row->name,
'username' => $row->username,
'email' => $row->email,
'role' => $row->role
);
$this->session->set_userdata('user', $userdata);
return TRUE;
}
return FALSE;
}
View
Code: <?php if($this->session->userdata('logged_in') == TRUE): ?>
Welcome <?php echo $this->session->userdata('name'); ?>, <?php echo anchor('users/logout', 'Logout'); ?>
<?php else: ?>
<?php echo anchor('users/login', 'Login'); ?> /
<?php echo anchor('users/register', 'Register'); ?>
<?php endif; ?>
[eluser]Samus[/eluser]
Your model should be:
Code: public function validate_login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
$row = $query->row();
$userdata = array (
'name' => $row->name,
'username' => $row->username,
'email' => $row->email,
'role' => $row->role
);
$this->session->set_userdata($userdata);
return TRUE;
}
return FALSE;
}
[eluser]elektra[/eluser]
Still not working. Must I create function in the model for each field I want to retrieve from the database and present it from controller?
[eluser]elektra[/eluser]
[quote author="Samus" date="1333812764"]Your model should be:
Code: public function validate_login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
$row = $query->row();
$userdata = array (
'name' => $row->name,
'username' => $row->username,
'email' => $row->email,
'role' => $row->role
);
$this->session->set_userdata($userdata);
return TRUE;
}
return FALSE;
}
[/quote]
Thank you but how would I call it from the controller?
[eluser]Samus[/eluser]
[quote author="elektra" date="1333820694"][quote author="Samus" date="1333812764"]Your model should be:
Code: public function validate_login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
$row = $query->row();
$userdata = array (
'name' => $row->name,
'username' => $row->username,
'email' => $row->email,
'role' => $row->role
);
$this->session->set_userdata($userdata);
return TRUE;
}
return FALSE;
}
[/quote]
Thank you but how would I call it from the controller?[/quote]
exactly how you would in any controller
$this->User_model->validate_login();
[eluser]elektra[/eluser]
Thank you very much for your help.
In case anybody faces this problem, below is my solution. Thank goodness it worked.
Controller
Code: public function login()
{
$this->form_validation->set_rules('username', 'Username', 'required|trim|xss_clean|callback__check_username_exist_login');
$this->form_validation->set_rules('password', 'Password', 'required|trim|min_length[6]|xss_clean');
if ($this->form_validation->run() == FALSE)
{
$data['title'] = 'Login';
$data['main_content'] = 'users/login';
$this->load->view('template', $data);
}
elseif ($this->User_model->validate_login())
{
redirect('users/dashboard');
}
else
{
redirect('users/index');
}
}
Model
Code: public function validate_login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', sha1($this->input->post('password')));
$query = $this->db->get('users');
if($query->num_rows == 1)
{
$row = $query->row();
$userdata = array (
'logged_in' => TRUE,
'name' => $row->name,
'username' => $row->username,
'email' => $row->email,
'role' => $row->role
);
$this->session->set_userdata($userdata);
return TRUE;
}
return FALSE;
}
|