Php 用于登录的codeigniter中的密码验证功能
嗨,当我在Php 用于登录的codeigniter中的密码验证功能,php,codeigniter,Php,Codeigniter,嗨,当我在codeigniter中验证登录时,我遇到了这个问题,它似乎没有检查我数据库中所需的密码。我数据库中所需的密码是使用此 $password_hash = password_hash($password, PASSWORD_BCRYPT); 如何在型号代码中使用密码验证功能 这是我的型号代码: public function login($data) { $condition = "username =" . "'" . $data['username'] . "' AND
codeigniter
中验证登录时,我遇到了这个问题,它似乎没有检查我数据库中所需的密码。我数据库中所需的密码是使用此
$password_hash = password_hash($password, PASSWORD_BCRYPT);
如何在型号代码中使用密码验证功能
这是我的型号代码:
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;
}
}
这是我的控制器:
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);
}
}
}
有人能帮我怎么做吗。。
提前感谢。您应该使用密码验证()来知道您的密码是否有效 尝试此模型功能:
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;
}
}
您应该使用password_verify()来知道您的密码是否有效 尝试此模型功能:
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;
}
}
希望这对您有所帮助: 从模型返回数据后,您可以使用
password\u verify
()
您的模型应如下所示:
public function login($data)
{
$this->db->where('username', $data['username']);
$query = $this->db->get('users');
if ($query->num_rows() == 1) {
$user = $query->row_array();
return $user;
} else {
return false;
}
}
更新:仪表板方法
public function dashboard()
{
/*$data['title'] = 'my title';
you can pass data to the view like this
$this->load->view('dashboard',$data);
*/
$this->load->view('templates/header');
$this->load->view('dashboard');
$this->load->view('templates/footer');
}
希望这对您有所帮助: 从模型返回数据后,您可以使用
password\u verify
()
您的模型应如下所示:
public function login($data)
{
$this->db->where('username', $data['username']);
$query = $this->db->get('users');
if ($query->num_rows() == 1) {
$user = $query->row_array();
return $user;
} else {
return false;
}
}
更新:仪表板方法
public function dashboard()
{
/*$data['title'] = 'my title';
you can pass data to the view like this
$this->load->view('dashboard',$data);
*/
$this->load->view('templates/header');
$this->load->view('dashboard');
$this->load->view('templates/footer');
}
您面临的实际问题是什么?我在db中的密码是哈希格式的。如果它是哈希格式,则未正确登录。如果我提供了正常文本,则其工作正常。您面临的实际问题是什么?我在db中的密码是哈希格式的。如果它是哈希格式,则未正确登录。如果我提供了正常文本,则其工作正常fine@pradeep你好我有一个doubt@pradeep嗨,普拉迪普,我有一个疑问