$query = $this->db->select('password')->get_where('members', array('email' => $this->input->post('email')));
if ($query->num_rows() == 1) {
if (password_verify($this->input->post('password'), $query->row(1))) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
Я использую приведенный выше код для проверки пароля ввода пользователя с помощью хэша из базы данных, и я использую CodeIgniter, который имеет встроенный password_compat, чтобы функции работали для версий менее 5.5.
Выше должно работать, но я продолжаю получать эту ошибку:
Важность: Предупреждение: strlen () ожидает, что параметр 1 будет строкой,
заданный объект Имя файла: compat / password.php Номер строки: 220
В чем может быть проблема здесь?
Спасибо!
Вам нужно получить результат запроса в переменной, и это неправильное использование
$query->row(1);
Это было бы
$rows=$query->row();
$rows->password;
проверьте код ниже
$query = $this->db->select('password')->get_where('members', array('email' => $this->input->post('email')));
if ($query->num_rows() == 1) {
$rows=$query->row();// here you assign result to $rows variable
Проверьте здесь, как вы передаете свою переменную пароля в качестве параметра
if (password_verify($this->input->post('password'), $rows->password)) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
Просто поменяй $query->row(1)
в $query->row(0)->password