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() ?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 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() функцией. Советую не изобретать велосипед, если оно того не стоит.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
23 июн. 2024, в 22:40
1000 руб./за проект
23 июн. 2024, в 22:19
500 руб./за проект