我有以下类来验证用户登录,
class Validation_model extends CI_Model {
public function validateLogin($userid,$userpass){
$this->load->library('encrypt');
$this->load->database();
$encrypted_string = $this->encrypt->encode($userpass);
$this->db->select('*');
$this->db->from('ecom-user');
$this->db->where('userid', $userid);
$this->db->where('userpassword', $encrypted_string);
$result = $this->db->get();
echo $result->num_rows();
}
}
但即使我输入了有效的用户ID和&密码它将行计数返回为0,请帮助我,我在哪里做错了?
答案 0 :(得分:1)
它不起作用,因为您加密密码。
CodeIgniter使用的加密函数在每次加密时使用随机初始化向量(IV),这意味着密码文本(加密文本)在每次加密时都会有所不同。
在处理密码时,您需要哈希它们,而不是加密它们。它们是相关的,但它们不是一回事。
如果你有PHP> = 5.5.0那么你可以这样做:
$hashed_password = password_hash($userpass, PASSWORD_DEFAULT);
// ...
$this->db->where('userpassword', $hashed_password);
为此,您还需要重新哈希数据库中的密码。