我正在使用来自https://github.com/dwightwatson/codeigniter-bcrypt的 codeigniter-bcrypt和 codeigniter。我有一个将发布数据提交到我的主控制器的表单。然后我通过模型检查数据库的记录。我用过
$hash = $this->bcrypt->hash_password($password);
在创建帐户时散列密码。它有效。密码在数据库中正确散列。但是现在我不确定在哪里使用反向来检查在表单中输入的密码是否与数据库的哈希密码相同。
if ($this->bcrypt->check_password($password, $stored_hash))
{
// Password does match stored password.
}
else
{
// Password does not match stored password.
}
我的模型中的代码是
function getUserByLogin($login, $password) {
$this->db->where('login',$login);
$this->db->where('password',$password);
$result = $this->getUsers();
if (count($result) > 0) {
return $result[0];
} else {
return null;
}
}
function getUsers() {
$query = $this->db->get('users');
if ($query->num_rows() > 0) {
return $query->result();
} else {
return array();
}
}
和我的控制器
if (isset($_POST['email']) && isset($_POST['password'])) {
$login = $_POST['email'];
$password = $_POST['password'];
$user = $this -> user_model -> getUserByLogin($login, $password);
$this -> saveUserToSession($user);
$loggedIn = ($user == null ? false : true);
}
任何帮助,将不胜感激。