0
내가 만든 경우 CodeIgniter의 3CodeIgniter의 사용자 등록 : 분할 로그인 누군가가 <em>등록 양식</em>을 채우고 그것을 제출하면이 조건에 조건이
와 등록 및 로그인 응용 프로그램을 포함 "비활성 계정"실패 성공적으로 "사용자"테이블의 "활성"열은 노호 이미지에 표시로, 0 값을받습니다
사용자가 할 수있는 전에 자신의 계정을 활성화해야합니다 의 .이 "분할"로그인 실패 조건 수 있도록, 위의 대신 코드의 라인 $this->session->set_flashdata("signin_failure", "Incorrect email or password");
의,
public function signin()
{
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|trim');
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
if ($this->form_validation->run())
{
$email = $this->input->post('email');
$password = $this->input->post('password');
$this->load->model('Usermodel');
$current_user = $this->Usermodel->user_login($email, $password, $active);
// Set the current user's data
if ($current_user) {
$this->session->set_userdata(
array(
'user_id' => $current_user->id,
'user_email' => $current_user->email,
'user_first_name' => $current_user->fname,
'is_logged_in' => TRUE
)
);
redirect('home');
} else {
$this->session->set_flashdata("signin_failure", "Incorrect email or password");
redirect('signin');
}
}
else
{
$this->load->view('signin');
}
}
내가 원하는 : IGN에서 Signin.php 컨트롤러에서
나는 signin()
기능이 2 : 이메일 또는 비밀번호가 잘못되었습니다.및계정이 활성화되지 않았습니다..
if (condition here) {
$this->session->set_flashdata("signin_failure", "Your account has not been activated");
} else {
$this->session->set_flashdata("signin_failure", "Incorrect email or password");
}
내 질문 : 나는 위의 코드에 무엇을 넣어 대신 condition here
해야합니까?
좀 더 구체적으로 말하면 : "활성"열의 값이 0 인 경우 do $this->session->set_flashdata("signin_failure", "Your account has not been activated");
?
USER_LOGIN() 내부 함수 Usermodel :
public function user_login($email, $password, $active) {
$query = $this->db->get_where('users', ['email' => $email, 'password' => md5($password), 'active' => 1]);
return $query->row();
}
UPDATE :이 함께했다
:
public function signin()
{
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|trim');
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
if ($this->form_validation->run())
{
$email = $this->input->post('email');
$password = $this->input->post('password');
$this->load->model('Usermodel');
$current_user = $this->Usermodel->user_login($email, $password);
// If we find a user
if ($current_user) {
// If the user found is active
if ($current_user->active == 1) {
$this->session->set_userdata(
array(
'user_id' => $current_user->id,
'user_email' => $current_user->email,
'user_first_name' => $current_user->fname,
'user_active' => $current_user->active,
'is_logged_in' => TRUE
)
);
redirect('home');
} else {
// If the user found is NOT active
$this->session->set_flashdata("signin_failure", "Your account has not been activated");
redirect('signin');
}
} else {
// If we do NOT find a user
$this->session->set_flashdata("signin_failure", "Incorrect email or password");
redirect('signin');
}
}
else
{
$this->load->view('signin');
}
}
를하지만에 결함이 있더라도 때문에 이메일과 비밀번호가 올바른 경우이지만 사용자는 비활성입니다. 메시지는 "귀하의 계정이 활성화되지 않았습니다"대신 "잘못된 이메일 또는 비밀번호"입니다.
'if ($ current_user-> active == 1)'에서'if ($ current_user [ 'active'] == 1)'로 변경하면 결과가 배열 객체가 아닌 결과로 반환되기 때문입니다. –
방금했는데이 오류 :'형식 stdClass의 개체를 배열로 사용할 수 없습니다'. –
모델 함수에서'return $ query-> row_array();'를 사용하십시오. –