doujie3888 2018-05-15 07:47
浏览 43
已采纳

用于登录的codeigniter中的密码验证功能

Hi all I have this issue when I validate log in in codeigniter that seems it does not check the required password in my database.The required password in my database is hash using this

$password_hash = password_hash($password, PASSWORD_BCRYPT);

How can i used password_verify function in my model code?

Here is my model code:

public function login($data) {

    $condition = "username =" . "'" . $data['username'] . "' AND " . "password =" . "'" . $data['password'] . "'";
    $this->db->select('*');
    $this->db->from('users');
    $this->db->where($condition);
    $this->db->limit(1);
    $query = $this->db->get();

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

Here is my controller:

public function login_user() 
{

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

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

          $this->load->view('login_view');
    } else {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password'),
            'firstname' => $this->input->post('firstname'),
            'lastname' => $this->input->post('lastname')
        );
        $result = $this->login_database->login($data);
        if ($result == TRUE) {
                    // Add user data in session
            $this->session->set_userdata('username', $data['username']);
            $this->session->set_userdata('firstname', $data['firstname']);
            $this->session->set_userdata('lastname', $data['lastname']);

            //redirect to dashboard
            $this->load->view('include/sidenavbar');
            $this->load->view('include/topnavbar');
            $this->load->view('dashboard');
        } else {


             $this->session->set_flashdata('message', 'Login is invalid. Please try again!');
            $this->load->view('login_view', $data);
        }
    }
}

can anyone help me how to do this.. Thanks in advance.

  • 写回答

2条回答 默认 最新

  • dongya6381 2018-05-15 08:32
    关注

    You should use password_verify() to know if you're password is valid.

    Try this model function:

    public function login($data) {
        $this->db->select('password');
        $this->db->from('users');
        $this->db->where('username', $data['username']);
        $this->db->limit(1);
        $query = $this->db->get();
    
        if ($query->num_rows() == 1) {
            $record = $query->row_array();
            return password_verify($data['password'], $record['password']);
        } else {
            return false;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)