@Alecsandr693
Новичок веб-дизайнер.

Пароль не проверяется в базе данных.Как устранить проблему с авторизацией?

if (isset ($_POST['done'])) {
$login = $_POST["login"];
$password = $_POST["password"];
if(empty($login)) {
exit ("Вы не ввели логин.");
}
if(empty($password)) {
exit ("Вы не ввели пароль");
}
$password = crypt(md5($password));
$mysqli = new mysqli ("localhost", "root", "", "ural_steel");
$result = $mysqli -> query ("
SELECT `id`
FROM `registr`
WHERE `login`='$login'
");
$r1 = $result -> num_rows;
if ($r1 == 0) {
exit("Такого логина не существует!");
} else {
$result2 = $mysqli -> query ("
SELECT `id`
FROM `registr`
WHERE `login`='$login' && `password`='$password'
");
$r2 = $result2 -> num_rows;
if ($r2 == 0) {
exit ("Пароль не верный!");

} else {
exit ("Поздравляю, вы вошли!");
}
}

}
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А если передать в $_POST["login"] строку "' OR 1=1 -- " то можно будет зайти с любым паролем.
Ответ написан
@theg4sh
Если есть возможность использовать меньше запросов - используйте ее.
var_dump - так же хорош для начинающих, это как перочинный ножик который всегда и везде с вами, но не забывайте, что есть и другие способы отладки - xdebug, например.
<?php
if (isset ($_POST['done'])) {
    $login = $_POST["login"];
    $password = $_POST["password"];
    if(empty($login)) {
        exit ("Вы не ввели логин.");
    }
    if(empty($password)) {
        exit ("Вы не ввели пароль");
    }
    $mysqli = new mysqli ("localhost", "root", "", "ural_steel");
    $q = $mysqli -> prepare ("SELECT `password` FROM `registr` WHERE `login`=?");
    $q->bind_param('s', $login);
    $result = $q->execute();
    $row = $q->fetch();
    if ($row !== NULL) {
        if (crypt(md5($password)) == $row['password']) {
            exit ("Поздравляю, вы вошли!");
        } else {
            exit ("Пароль не верный!");
        }
    } else {
        exit("Такого логина не существует!");
    }

}
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы