Задать вопрос
tokmaganbet
@tokmaganbet

Можно ли использовать функции внутри SQL запроса?

<?php
$login = filter_var(trim($_POST['login']),
    FILTER_SANITIZE_STRING);
$password = filter_var(trim($_POST['password']),
    FILTER_SANITIZE_STRING);

$mysql = new mysqli('localhost', 'root', '', 'register');
$result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND 'password_verify($password, `password`)' = 1");

$mysql->close();
$user = $result->fetch_assoc();
if(count($user) == 0) {
    echo 'Не было найдено такого пользователя';
    exit();
}


Как проверить пароль используя password_verify() ?
  • Вопрос задан
  • 256 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Нюансы при использовании функций SQL языка:
  • Какая-то часть бизнес логики уходит в неконтролируемые вещи вроде SQL. Пароль лучше точно проверять не функцией SQL, а функцией PHP. В таком случае код будет полностью соответствовать бизнес требованием и тесты не будут работать с базой.
  • Использование SQL функций в запросах игнорирует индексы. Поэтому на больших данных и сложных запросах время работы такого запроса может увеличиться.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$mysql = new mysqli('localhost', 'root', '', 'register');
$stmt = $mysql->prepare("SELECT `password` FROM `users` WHERE `login` = ?");
$stmt->bind_param('s', $login);
$stmt->execute();
$stms->bind_result($hash);
if (!$stmt->fetch() || !password_verify($password, $hash)) {
  echo 'Error';
}
Ответ написан
Комментировать
@qid00000000
Мало что знаю, но информацию найду в гугле
Использовать функции конечно можно, но только встроенные ( как я понял, тут речь о php функциях).

Пароли, в большинстве случаев, кодируются MD5() функцией. Советую не изобретать велосипед, если оно того не стоит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽