Codeigniter에서 MD5 로그인

토비

제 컨트롤러와 모델인데 비밀번호를 확인할 수 없습니다.

컨트롤러 :

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;
}

사용자 이름과 비밀번호는 맞지만 '사용자 이름 또는 비밀번호가 틀 렸습니다'라는 메모가 표시되면 !!

ED 씨

더 이상 안전하지 않은 사용자 로그인에 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MD5를 사용하여 Python 프로그램에서 SQL 로그인 암호화

분류에서Dev

온라인 이미지에서 MD5 해시 계산

분류에서Dev

MD5 ()에서 crypt () 로의 PHP 암호 해시

분류에서Dev

초기 값으로 Python에서 md5 객체 만들기

분류에서Dev

VB.NET에서 MD5로 해시

분류에서Dev

R에서 md5 해시를 bigint로 변환

분류에서Dev

사용자가 로그인 할 수 있도록 데이터베이스에서 MD5 해시 읽기

분류에서Dev

PHP에서 md5로 S3 업로드 성공 여부 확인

분류에서Dev

인증서 서명이 MD5 OpenSSL인지 확인

분류에서Dev

Perl에서 md5 함수의 PHP 아날로그는 무엇입니까?

분류에서Dev

MD5를 사용하여 Postgres에서 SQLAlchemy로 고유 인덱스 생성

분류에서Dev

md5 CA 인증서 읽기를위한 OpenSSL 1.0.2

분류에서Dev

MD5 비밀번호로 LDAP에 연결

분류에서Dev

MySQL에 MD5 저장

분류에서Dev

MD5는 폴더에서 반복되는 파일을 확인합니까?

분류에서Dev

neo4j에서 비밀번호를 md5로 저장합니까?

분류에서Dev

자바에서 MD5 바이트를 PHP로 변환하는 방법

분류에서Dev

Python 2.x에서 Python 3으로 Python hashlib MD5 불일치?

분류에서Dev

Codeigniter 암호가 md5에서 작동하지 않음

분류에서Dev

PHP 및 MD5로 로그인 및 등록

분류에서Dev

PHP 및 MD5로 로그인 및 등록

분류에서Dev

MD5 해시 기능의 특수 응용 프로그램에서 이메일 주소 복구

분류에서Dev

Python 2 md5 라이브러리에서 Python 3 hashlib로 올바르게 마이그레이션

분류에서Dev

"MD5 서명을 확인할 수 없습니다." Worldpay FuturePay 설치

분류에서Dev

MySQL에서 MD5 사용

분류에서Dev

PHP에서 RSA가있는 MD5

분류에서Dev

char []에서 MD5 해시 생성

분류에서Dev

메모리에있는 개체의 md5를 .Rds로 해당 개체의 md5와 비교합니다.

분류에서Dev

파일 이름의 md5를 기반으로 logstash 이벤트에 태그 추가

Related 관련 기사

  1. 1

    MD5를 사용하여 Python 프로그램에서 SQL 로그인 암호화

  2. 2

    온라인 이미지에서 MD5 해시 계산

  3. 3

    MD5 ()에서 crypt () 로의 PHP 암호 해시

  4. 4

    초기 값으로 Python에서 md5 객체 만들기

  5. 5

    VB.NET에서 MD5로 해시

  6. 6

    R에서 md5 해시를 bigint로 변환

  7. 7

    사용자가 로그인 할 수 있도록 데이터베이스에서 MD5 해시 읽기

  8. 8

    PHP에서 md5로 S3 업로드 성공 여부 확인

  9. 9

    인증서 서명이 MD5 OpenSSL인지 확인

  10. 10

    Perl에서 md5 함수의 PHP 아날로그는 무엇입니까?

  11. 11

    MD5를 사용하여 Postgres에서 SQLAlchemy로 고유 인덱스 생성

  12. 12

    md5 CA 인증서 읽기를위한 OpenSSL 1.0.2

  13. 13

    MD5 비밀번호로 LDAP에 연결

  14. 14

    MySQL에 MD5 저장

  15. 15

    MD5는 폴더에서 반복되는 파일을 확인합니까?

  16. 16

    neo4j에서 비밀번호를 md5로 저장합니까?

  17. 17

    자바에서 MD5 바이트를 PHP로 변환하는 방법

  18. 18

    Python 2.x에서 Python 3으로 Python hashlib MD5 불일치?

  19. 19

    Codeigniter 암호가 md5에서 작동하지 않음

  20. 20

    PHP 및 MD5로 로그인 및 등록

  21. 21

    PHP 및 MD5로 로그인 및 등록

  22. 22

    MD5 해시 기능의 특수 응용 프로그램에서 이메일 주소 복구

  23. 23

    Python 2 md5 라이브러리에서 Python 3 hashlib로 올바르게 마이그레이션

  24. 24

    "MD5 서명을 확인할 수 없습니다." Worldpay FuturePay 설치

  25. 25

    MySQL에서 MD5 사용

  26. 26

    PHP에서 RSA가있는 MD5

  27. 27

    char []에서 MD5 해시 생성

  28. 28

    메모리에있는 개체의 md5를 .Rds로 해당 개체의 md5와 비교합니다.

  29. 29

    파일 이름의 md5를 기반으로 logstash 이벤트에 태그 추가

뜨겁다태그

보관