Php Codeigniter-登录检查始终失败
我正在使用codeigniter进行登录和注册,注册工作正常,但登录检查失败,无法找到解决方案 这是模型和控制器 模型(User_Model.php) 控制器(User.php)Php Codeigniter-登录检查始终失败,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我正在使用codeigniter进行登录和注册,注册工作正常,但登录检查失败,无法找到解决方案 这是模型和控制器 模型(User_Model.php) 控制器(User.php) 公共函数登录() { $email=$this->input->post('email'); $password=$this->input->post('password'); $this->form_validation->set_规则('email','E-mail','required','valid_email
公共函数登录()
{
$email=$this->input->post('email');
$password=$this->input->post('password');
$this->form_validation->set_规则('email','E-mail','required','valid_email');
$this->form_validation->set_规则('password'、'password'、'required');
如果($this->form\u validation->run()==FALSE)
{
$data['title']='Login';
$this->load->view('default/header',$data);
$this->load->view('default/login');
$this->load->view('default/footer');
}否则{
如果($this->User\u model->resolve\u User\u login($email,$password))
{
呼应‘一切都好’;
}否则{
//错误
$this->session->set_flashdata('msg','error-mail或password');
重定向(“登录”);
}
}
}
私有函数哈希_密码($password)
{
返回密码\u散列($password,password\u BCRYPT);
}
当我输入正确的电子邮件和密码时,它会显示错误的电子邮件和密码结果。像这样更改您的型号功能。请注意,如果使用下面的代码,则不再需要验证\u password\u hash()函数
public function resolve_user_login($email, $password)
{
$query = $this
->db
->where('email',$email)
->where('password',password_hash($password, PASSWORD_DEFAULT))
->limit(1)
->get('user');
if($query->num_rows()>0)
{
return $query->result();
}
else
{
return false;
}
}
在控制器中有一点变化
if ($this->User_model->resolve_user_login($email, $password)!==False)
{
echo 'Everything is good';
}
真的希望这个方法对你有用。如果没有,请在注释中指定错误。如下更改模型函数。请注意,如果使用下面的代码,则不再需要验证\u password\u hash()函数
public function resolve_user_login($email, $password)
{
$query = $this
->db
->where('email',$email)
->where('password',password_hash($password, PASSWORD_DEFAULT))
->limit(1)
->get('user');
if($query->num_rows()>0)
{
return $query->result();
}
else
{
return false;
}
}
在控制器中有一点变化
if ($this->User_model->resolve_user_login($email, $password)!==False)
{
echo 'Everything is good';
}
真的希望这个方法对你有用。如果没有在注释中指定错误。目前还没有办法解密像bcyrpt或codeigenter的散列这样的散列,你可以使用php的方法
密码验证(“你的单词”,“散列”)
设置一个条件,如果返回true,则可以登录。没有办法(目前)解密像bcyrpt或codeigenter的散列这样的散列,您可以使用php的方法password\u verify('your\u word','the\u hash')
设置一个条件,如果返回true,则您可以登录。没有函数代码用于登录。$hash=$this->db->get()->row('password')
从数据库中为您提供所需的密码哈希?如何知道此提供的结果?使用var\u dump($hash)然后使用die()终止脚本代码>或退出()代码>是,结果相同。db password和hash。没有函数代码用于该操作$hash=$this->db->get()->行('password')
从数据库中为您提供所需的密码哈希?如何知道此提供的结果?使用var\u dump($hash)然后使用die()终止脚本代码>或退出()代码>是,结果相同。db密码和哈希。我没有使用md5加密,我正在控制器中使用以下函数私有函数hash_password($password){返回密码\u hash($password,password_BCRYPT);}
是,我在问题(控制器)代码中添加了该函数,请现在重试。。我在您的模型中进行了编辑并将md5更改为bcrypt。我在以下行中进行了更改:->where('password',password\u hash($password,password\u DEFAULT))
到->select('password',password\u hash($password,password\u bcrypt))
在用户注册时存储密码时,您是否将bcrypt与任何随机盐一起使用。。密码\u散列函数用于将输入的密码转换为普通bcrypt散列。通过编写一个简单的单独PHP脚本,使用从password_hash函数生成的哈希值检查数据库中的密码哈希值。我没有使用md5加密,我在Controllerprivate function hash_password($password){return password_hash($password,password_BCRYPT);}
是,我已在问题(控制器)代码中添加了该功能。请现在重试。。我在您的模型中进行了编辑并将md5更改为bcrypt。我在以下行中进行了更改:->where('password',password\u hash($password,password\u DEFAULT))
到->select('password',password\u hash($password,password\u bcrypt))
在用户注册时存储密码时,您是否将bcrypt与任何随机盐一起使用。。密码\u散列函数用于将输入的密码转换为普通bcrypt散列。通过编写一个简单的单独PHP脚本,使用password_哈希函数生成的哈希值检查数据库中的密码哈希值。