Как проверять парль по password_hash?

177
16 августа 2017, 20:05

Делаю вход в админку. Пароль хеширован password_hash. Принимаю данные с формы для входа в админку и тоже хеширую их:

$login_admin->password = password_hash("$login_admin->password",PASSWORD_DEFAULT);

Этот хеш передается в модель. И запрос не срабатывает из-за разного хеша. Подскажите что я делаю не так? Не пойму как сравнить хешированный пароль если он каждый раз меняется.

public function checkAdmin($login_admin)
{
    $q = "SELECT name, password FROM users 
          WHERE name = '$login_admin->nickname' AND password = '$login_admin->password'";
    $res = $this->query($q);
    return $res;
}

и

$login_admin = new stdClass();
        $login_admin->nickname = Request::post('nickname','string');
        $login_admin->password = Request::post('password','string');
        $checkAdmin = $this->model->checkAdmin($login_admin);
        $data['checkAdmin'] = $checkAdmin;
Answer 1

Есть функция для проверки

$pass=password_hash(123, PASSWORD_DEFAULT);
if(password_verify(123, $pass){...}

Demo

После дополнения вопроса:

Выбирайтей из базы по нику пользователя, сравнивайте пароль в php:

public function getAdmin($login_admin)
{
    $q = "SELECT name, password FROM users WHERE name = '{$login_admin->nickname}'";
    $res = $this->query($q);
    if($res && password_verify($login_admin->password, $res->password)){
        return $res;
    }else{
        return false;
    }
}
if(($admin=$this->model->getAdmin($login_admin))){...}
READ ALSO
не происходит загрузка изображения [требует правки]

не происходит загрузка изображения [требует правки]

здравтствуйте, не могу понять почему не происходит загрузка изображения на сайт, ошибки нет, запись ссылки в базу происходит, использую функцию...

166
Перехват html, генерируемого web-сервером перед отправкой

Перехват html, генерируемого web-сервером перед отправкой

Здравствуйте! Есть сервер на Linux - RubyonRails + Passenger + NginxПодскажите, пожалуйста, как можно перехватить html, генерируемый сервером, и модифицировать...

152