CodeIgniter — strlen () ожидает, что параметр 1 будет строкой, объект задан

$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

В чем может быть проблема здесь?

Спасибо!

0

Решение

Вам нужно получить результат запроса в переменной, и это неправильное использование

$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;
}

Читать Генерация результатов запроса

0

Другие решения

Просто поменяй $query->row(1) в $query->row(0)->password

0

По вопросам рекламы [email protected]