Tôi hiện đang thực hiện quy trình xác thực để kiểm tra mật khẩu cũ của người dùng nhưng vấn đề là tôi không hiểu tại sao truy vấn của mình lại trả về 0 hàng trong khi dự kiến sẽ có 1 hàng. Một điều nữa là ngay cả khi tôi không chuyển đổi văn bản mật khẩu thành md5, mật khẩu băm vẫn nhận được câu trả lời chính xác, nhưng tôi không biết tại sao điều này lại xảy ra. Đây là mã của tôi cho đến nay:
hàm công khai validate_oldpassword($username,$password)
{
$this->db->select('user_salt');
$query = $this->db->get_where('đăng nhập',mảng('tên người dùng' => $tên người dùng));
nếu ($query->num_rows() == 1)
{
foreach ($query->result() như $row)
{
$password2 = hash("sha256",$password.$row->user_salt);
$this->db->flush_cache();
$query = $this->db->get_where('đăng nhập', mảng('tên người dùng' => $tên người dùng, 'mật khẩu' => $password2));
//trả về $this->db->last_query();
trả về $query->num_rows();
nếu($query->num_rows()==1){
trả lại "YEHEY";
}khác{
trả về "KHÔNG";
}
}
}
}
Tôi cũng đã kiểm tra truy vấn và nó trả về đúng truy vấn:
CHỌN * TỪ (`đăng nhập`) NƠI `tên người dùng` = 'kahel' VÀ `mật khẩu` = 'f91d20d381426ea56e57da9ab23d0c568b8f934c3ff313e1bbf6c28a4fee758a'
mật khẩu của tôi là Bài kiểm tra
muối là XgvT7F~(CYr#*0E1^UI@xkqJ5GcAO8BHsotZpf+WQ!4&ja2y%NdelLmhPSnRw9)zDK63VMuib
Mật khẩu được lưu trữ là f91d20d381426ea56e57da9ab23d0c56 8b8f934c3ff313e1bbf6c28a4fee758a
Điều làm tôi khó chịu nhất là trong chức năng trang đăng nhập của tôi, mọi thứ đều hoạt động tốt. Đây là chức năng mã đăng nhập của tôi:
hàm công khai get_login_credentials($username,$password)
{
$this->db->select('user_salt');
$query = $this->db->get_where('đăng nhập',mảng('tên người dùng' => $tên người dùng));
nếu ($query->num_rows() == 1)
{
foreach ($query->result() như $row)
{
$password = hash("sha256",md5($password).$row->user_salt);
$query = $this->db->get_where('đăng nhập', mảng('tên người dùng' => $tên người dùng, 'mật khẩu' => $mật khẩu));
trả về $query->num_rows();
}
}
}
Tôi thực sự không thể hiểu tại sao nó trả về hàng không.
Ở chức năng đăng nhập bạn thiết lập:
$password = hash("sha256",md5($password).$row->user_salt);
Và đặt trong valid_oldpassword:
$password2 = hash("sha256",$password.$row->user_salt);
Bạn không băm md5 nó
Tôi là một lập trình viên xuất sắc, rất giỏi!