제 컨트롤러와 모델인데 비밀번호를 확인할 수 없습니다.
컨트롤러 :
function login() {
$data = array();
if ($this->input->post('username') != '') {
$data = $this->loginm->login($this->input->post('username'), md5($this->input->post('password')));
if ($data['success'] == TRUE) {
$type = $this->session->userdata('type');
if($type==1){ // Admin
// redirect(get_slug('test',false));
$this->load->view("test");
}
}
$data['username'] = $this->input->post('username');
$data['password'] = $this->input->post('password');
}
모델 :
function login($name, $pass) {
// $data['success'] = FALSE;
$user = $this->db->where('username', $name)->where('deleted', 0)->get($this->prefix . 'user');
if ($user->num_rows() > 0) {
$user = $user->row();
if ($this->bcrypt->verify($pass, $user->password)) {
$data['success'] = TRUE;
$this->session->set_userdata(array('user' => $user->user_id));
$this->session->set_userdata(array('type' => $user->user_type));
} else {
$data['success'] = FALSE;
$data['message'] = 'Username or password wrong !!';
}
} else {
$data['success'] = FALSE;
$data['message'] = 'Username or password wrong !!';
}
return $data;
}
사용자 이름과 비밀번호는 맞지만 '사용자 이름 또는 비밀번호가 틀 렸습니다'라는 메모가 표시되면 !!
더 이상 안전하지 않은 사용자 로그인에 MD5를 사용하지 않습니다.
대신 아래 코드가 도움이 될 수 있습니다.
여기 http://php.net/manual/en/function.password-hash.php 에서 암호 해시를 사용합니다 .
사용자 암호를 만들 때 암호 열이 var char 255 인지 확인하십시오 .
해싱 암호 모델
public function add_user() {
$this->load->library('encryption');
$key = bin2hex($this->encryption->create_key(16));
$options = [
'cost' => 12,
'salt' => $key,
];
$secure_code = password_hash($this->input->post('password'), PASSWORD_BCRYPT, $options);
$data = array(
'username' => $this->input->post('username'),
'password' => $secure_code,
// Any Other Data you need.
);
$this->db->set($data);
$this->db->insert($this->db->dbprefix . 'user');
}
이제 사용자 정보를 확인하기 위해 로그인 모델 또는 라이브러리를 만들어야합니다.이 경우 라이브러리가 있습니다 .
<?php
class User {
public function __construct() {
$this->CI =& get_instance();
if ($this->CI->session->userdata('is_logged')) {
$this->CI->db->select('*');
$this->CI->db->from($this->CI->db->dbprefix . 'user');
$this->CI->db->where('user_id', $this->CI->session->userdata('user_id'));
$user_info_query = $this->CI->db->get();
if ($user_info_query->num_rows() > 0) {
$this->user_id = $user_info_query->row('user_id');
$this->username = $user_info_query->row('username');
$this->firstname = $user_info_query->row('firstname');
$this->lastname = $user_info_query->row('lastname');
}
}
}
public function login($username) {
if ($this->validate_password() == TRUE) {
$this->CI->db->where('username', $username);
$user_info_query = $this->CI->db->get($this->CI->db->dbprefix . 'user');
if ($user_info_query->num_rows() > 0) {
$this->user_id = $user_info_query->row('user_id');
$this->username = $user_info_query->row('username');
$this->firstname = $user_info_query->row('firstname');
$this->lastname = $user_info_query->row('lastname');
return TRUE;
} else {
return FALSE;
}
}
}
// http://php.net/manual/en/function.password-verify.php
public function validate_password() {
if (password_verify($this->CI->input->post('password'), $this->get_password())) {
return TRUE;
} else {
return FALSE;
}
}
public function get_password() {
$this->CI->db->where('username', $this->CI->input->post('username'));
$query = $this->CI->db->get($this->CI->db->dbprefix . 'user');
if ($query->num_rows() > 0) {
$row = $query->row();
return $row->password;
} else {
return FALSE;
}
}
public function get_user_id() {
return $this->user_id;
}
public function get_username() {
return $this->username;
}
public function get_firstname() {
return $this->firstname;
}
public function get_lastname() {
return $this->lastname;
}
}
로그인 컨트롤러 및보기에서
Codeigniter 양식 유효성 검사 라이브러리 http://www.codeigniter.com/user_guide/libraries/form_validation.html 및 양식 도우미 http://www.codeigniter.com/user_guide/helpers/form_helper.html 사용
맞춤 경로를 설정해야 할 수 있습니다.
application/config/routes.php
제어 장치:
파일 이름 Login.php
<?php
class Login extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->library('user');
$this->load->library('form_validation');
$this->load->helper('form');
$this->load->helper('url');
}
public function index() {
$this->data['title'] = 'Some Title';
$this->form_validation->set_rules('username', 'Username', 'trim|required|callback_verfiy_login[username]');
$this->form_validation->set_rules('password', 'password', 'trim|required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login_page', $this->data);
} else {
$this->data = array(
'is_logged' => TRUE,
'user_id' => $this->user->get_user_id()
);
$this->session->set_userdata($this->data);
redirect('success_controller');
}
}
public function verfiy_login($str) {
if ($this->user->login($str) == TRUE) {
return TRUE;
} else {
$this->form_validation->set_message('verfiy_login', 'Cannot login please try again!');
return FALSE;
}
}
}
전망
<?php echo form_open_multipart('login');?>
<?php $username_data = array(
'id' => 'form-username',
'name' => 'username',
'class' => 'form-control',
'value' => set_value('username'),
'size' => '50',
'placeholder' => 'Username'
);?>
<?php echo form_input($username_data);?>
<?php echo form_error('username', '<br/><div class="text-center text-danger">', '</div>'); ?>
<?php $password_data = array(
'id' => 'form-password',
'class' => 'form-control',
'name' => 'password',
'value' => set_value('password'),
'size' => '50',
'placeholder' => 'Password'
);?>
<?php echo form_password($password_data);?>
<?php echo form_error('password', '<br/><div class="text-center text-danger">', '</div>'); ?>
<?php $submit_data = array(
'id' => 'form-submit',
'type' => 'submit',
'name' => 'sumbmit',
'class' => 'btn btn-primary',
'value' => 'Login'
);?>
<?php echo form_submit($submit_data);?>
<?php echo form_close();?>
도움이 되었기를 바랍니다:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다