Не работает скрипт авторизации php

189
13 декабря 2018, 10:40

Не проходит проверка на соответствие паролей введенный и из бд, помогите

<?php
if(isset($_POST['submit'])){
    $login = htmlspecialchars(trim($_POST["login"]));
    $password = htmlspecialchars(trim($_POST["password"]));
    $login_error = "";
    $password_error = "";
    $not_found = "";
    if(empty($login) && $password == ""){
        $login_error = "Введите логин";
        $password_error = "Введите пароль";
    }
    elseif(empty($login)){
        $login_error = "Введите логин";
    }
    elseif($password == ""){
        $password_error = "Введите пароль";
    }
    else{
        $login = false;
        $con = mysqli_connect("localhost", "root", "", "clause");
        if(mysqli_connect_error()){
            echo "Failed to connect to DataBase " . mysqli_connect_error();
        }
        $query = "SELECT `login`, `password` FROM `user`;";
        $result = mysqli_query($con, $query);
        while($row = mysqli_fetch_array($result)){
            if($password == $row['password'] && $login == $row['login']){
                echo $password; // НЕ ВЫВОДИТ НИЧЕГО, ЕСЛИ ВЫЗВАТЬ ВНЕ WHILE ВЫВОДИТ ПЕРЕМЕННУЮ
                header("Location: main_page.php");
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Log In - Clause</title>
    <link rel="stylesheet" href="../styles/login_style.css">
</head>
<body>
    <form method="post">
        <div id="login_text">Вход</div>
        <div id="not_found"><?=$not_found?></div>
        <label for="login">Логин</label><br>
        <input type="text" name="login" id="login" value="<?=$login?>"><br>
        <label class="error"><?=$login_error?></label><br>
        <label for="password">Пароль</label><br>
        <input type="password" name="password" id="password"><br>
        <label class="error"><?=$password_error?></label><br><br>
        <input type="submit" name="submit" id="submit" value="Войти">
        <div id="to_registration"><a href="../php/registration.php">Зарегестривроваться</a></div>
    </form>
</body>
</html>
Answer 1
mysqli_fetch_array($result)

Как минимум надо исправить на

mysqli_fetch_assoc($result)

fetch_array - создает обычный массив, а вы далее обращаетесь к ассоциативному.

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

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

READ ALSO
Очень большой update

Очень большой update

У меня в базе хранится список файловНа странице надо отображать их размер

157
Query failed: ERROR: invalid input syntax for type json

Query failed: ERROR: invalid input syntax for type json

Почему-то возникает ошибка при вставке json в базу:

160
Шаблон для tuple

Шаблон для tuple

У меня есть нечто такое

172
Использование юникода в консоли

Использование юникода в консоли

Работаю MS VS 201, Win 7Следующий код выводит не тот символ, какой надо:

175