У меня есть следующий код, который проверяет и имя пользователя, и пароль, но я хотел бы изменить его, чтобы он проверял, является ли имя пользователя или пароль действительными.
Я думал о том, чтобы сделать две разные функции checkUsername
и checkPassword
как функции и иметь два обратных вызова для каждого входа.
Я просто хотел бы знать, нахожусь ли я на правильном пути или мой контроллер и модель могут быть изменены, как они?
Модель:
function check_login($username,$password) {
$query = $this->db->query("SELECT id, first_name, last_name, email, password FROM users WHERE email = ? and password = ?", array($username, md5($password))); // Result
return ($query->num_rows() == 1) ? $query->row() : FALSE;
}
}
Контроллер:
function _checkUsernamePassword() {
// adding the _ makes the function 'private' so it can't be called from the URI.
extract($_POST); // Gets data from form and creates vars
$user = $this->login_model->check_login($username,$password);
if(! $user){ // != If username or password are not correct
$this->session->set_flashdata('login_error',TRUE); //does not add the non valid login to the session
$this->form_validation->set_message('_checkUsernamePassword', 'Sorry %s is not correct.');
return FALSE;
} else {
$this->session->set_userdata('logged_in',TRUE);
$this->session->set_userdata('user_id',$user->id);
$this->session->set_userdata('user_name',$user->first_name);
$this->session->set_userdata('user_email',$user->email);
return TRUE;
}