【问题标题】:Codeigniter changed md5 on bcrpt hashed passwordCodeigniter 在 bcrpt 散列密码上更改了 md5
【发布时间】:2016-08-17 12:27:58
【问题描述】:

如何在 CodeIgniter md5 上更改 bcrypt?我要散列密码

型号代码http://wklej.org/id/2784670/

public function can_log_in($login, $password){

    // var_dump($login);
    // print_r($password);
    // bcrypt
    //  die;
    // print_r(md5($password));

    $result = $this->db
              ->from('users')
              ->where('email', $login)
              ->where('password', md5($password))
              ->get();

    // print_r($result);die;

    $this->db->where('email', $login);
    $this->db->where('password', md5($password));  How change md5 on bcrypt?>???!

    $query = $this->db->get('users');


    if ($result->num_rows()== 1){
        return true;
    } else {
        return false;
    }

}

【问题讨论】:

标签: php codeigniter md5 bcrypt


【解决方案1】:

你可以通过它变成bcrpt hashed passowrd

$this->hashpassword($this->input->post('password'))

【讨论】:

  • 我想重设密码你聪明吗?
【解决方案2】:

我会使用 php password_hash()

在你的数据库密码栏varchar 255

public function createUser() {
    $options = [
       'cost' => 12,
    ];

    $new_password = password_hash($this->input->post('password'), PASSWORD_BCRYPT, $options);

    $data = array(
       'username' => $this->input->post('username'),
       'password' => $new_password
    );

    $this->db->set($data);
    $this->db->insert('user');
}

上面的例子会输出类似于:

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

还有 php password_verify()

那么你需要做的是

型号Guide

文件名:Login_model.php

<?php

class Login_model extends CI_Model {

    public function getUser() {
        if ($this->verify()) {
            $this->db->select('*');
            $this->db->from('user');
            $this->db->where('username', $this->input->post('username'));

            if ($query->num_rows() > 0) {
                return $query->row();
            } else {
                return false;
            }

        }
    }

    public function verify() {
        $hashed = $this->getHash();
        $password = $this->input->post('password');

        if (password_verify($password, $hashed)) {
            return true;
        } else {
            return false;
        }
    }

    public function getHash() {
        $this->db->select('*');
        $this->db->from('user');
        $this->db->where('username', $this->input->post('username'));

        if ($query->num_rows() > 0) {
            return $query->row()->password;
        } else {
            return false;
        }
    }
}

控制器Guide

文件名:Login.php

<?php

class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->model('login_model');
    }

    public function index() {
        $data['title'] = 'Login';

        $this->form_validation->set_rules('username', 'Username', 'trim|required');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|callback_verify');

        if ($this->form_validation->run() == false) {

            $this->load->view('header_view', $data);
            $this->load->view('login_view', $data);
            $this->load->view('footer_view', $data);

        } else {

            $userdata = $this->login_model->getUser();

            $data = array(
                'user_id' => $userdata->user_id
            );

            // You can set your session userdata

            redirect('success');
        }
    }

    public function verify() {
        if ($this->login_model->verify()) {
            return true;
        } else {
            $this->form_validation->set_message('verify', 'Opps something gone wrong!');
            return false;
        }
    }
}

注意:在 CI3 版本中,get 请勿根据需要在 config.php 中设置 base_url

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2013-04-24
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2018-02-23
    相关资源
    最近更新 更多