Добрый вечер дорогие читатели! Случилась такая проблема что при регистрации данные вводятся в БД, но на сам аккаунт не заходит. Также при входе не заходит на аккаунт. Помогите пожалуйста разобраться в чём дело. Регистрация: Код (Text): <?php include 'connect.php'; if (isset($_POST['login']) and isset($_POST['password']) and isset($_POST['password_confirm'])) { $login = $_POST['login']; $password = $_POST['password']; $password_confirm = $_POST['password_confirm']; if ($password == $password_confirm) { $query = "SELECT * FROM users WHERE login='$login'"; $result = mysqli_query($link, $query) or die(mysqli_error($link)); $user = mysqli_fetch_assoc($result); function validate_form($login, $password) { $valid = true; if (empty($login) or empty($password)) { $valid = false; $_SESSION['validate'] = 'Пароль и логин не должны быть пустыми'; } if (strlen($login) < 2 || strlen($login) > 10) { $valid = false; $_SESSION['validate'] = 'Логин должен содержать не менее 2 и не более 10 символов'; } if (strlen($password) < 6 || strlen($password) > 12) { $valid = false; $_SESSION['validate'] = 'Пароль должен содержать не менее 6 и не более 12 символов'; } return $valid; } if (empty($user)) { $_SESSION['auth'] = true; $_SESSION['permissions'] = 'user'; $_SESSION['user'] = $login; $query = "INSERT INTO users SET login='$login', password='$password', permissions='user'"; mysqli_query($link, $query); header("Location: index.php"); } else { $_SESSION['error'] = 'Пользователь с таким логином уже есть'; } } else { $_SESSION['error'] = 'Пароль не подтвержен'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="icon" type="image/svg" href="img/logogreen.svg"> <link rel="stylesheet" type="text/css" href="assets/css/style.css"> <link rel="stylesheet" type="text/css" href="css/header.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Parkinsans:wght@300..800&display=swap" rel="stylesheet"> <title>Document</title> </head> <header class="header"> <div class="container"> <div class="header_inner"> <?php include 'header.php' ?> </div> </div> </header> <body class="signup__background"> <section class="container signup__center "> <div class=""> <div class="item__header"> <div class="signup__background__left"> <div class="item signup__card"> <h1 class="signup__title">Sign up</h1> </div> </div> <div class="item signup__background__right"> <form action="signup.php" method="post" class=""> <div class="signup__form"> <div> <label for="email" class="signup__text">Почта</label> <input class="signup__line" type="email" placeholder="Введите вашу почту" name="login" required> </div> <div> <label for="phone" class="signup__text">Номер телефона</label> <input class="signup__line" type="tel" placeholder="Введите ваш номер телефона" name="phone" required> </div> <div> <label for="password" class="signup__text">Пароль</label> <input class="signup__line" type="password" placeholder="Введите пароль" name="password" required> </div> <div> <label for="password__repiat" class="signup__text">Повторите пароль</label> <input class="signup__line" type="password" placeholder="Повоторите пароль" name="password_confirm" required> </div> <div class="signup__button__center"> <input type="submit" class="signup__button " value="Зарегестрироваться"> </div> <p class="signup__link">Уже зарегестрированы?<a href="login.php" class="yellow">Вход</a> </p> </div> </form> </div> </div> </div> </section> </body> </html> Вход: Код (Text): <?php include 'connect.php'; if (isset($_POST['login']) and isset($_POST['password']) ) { $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; $result = mysqli_query($link, $query) or die(mysqli_error($link)); $user = mysqli_fetch_assoc($result); if(!empty($user)) { if($user['password'] == $_POST['password']) { $_SESSION['auth']= true; $_SESSION['permissions'] = $user['permissions']; header('Location: index.php'); } else { echo 'Неверная почта или пароль'; } } } ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="icon" type="image/svg" href="img/logogreen.svg"> <link rel="stylesheet" type="text/css" href="assets/css/style.css"> <link rel="stylesheet" type="text/css" href="css/header.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Parkinsans:wght@300..800&display=swap" rel="stylesheet"> <title>Document</title> </head> <header class="header"> <div class="container"> <div class="header_inner"> <?php include 'header.php' ?> </div> </div> </header> <body class="signup__background"> <section class="container signup__center "> <div class=""> <div class="item__header"> <div class="signup__background__left"> <div class="item signup__card"> <h1 class="signup__title">Log in</h1> </div> </div> <div class="item signup__background__right"> <form action="" class=""> <div class="login__form"> <div> <label for="email" class="signup__text">Почта</label> <input class="signup__line" type="email" placeholder="Введите вашу почту" name="login" required> </div> <div> <label for="password" class="signup__text">Пароль</label> <input class="signup__line" type="password" placeholder="Введите пароль" name="password" required> </div> <div class="signup__button__center"> <input type="submit" class="login__button " value="Войти"> </div> <p class="signup__link">Ещё не зарегестрированы?<a href="signup.php" class="yellow">Регистрация</a> </p> </div> </form> </div> </div> </div> </section> </body> </html>
А что по твоему должно происходить? --- Добавлено --- В любом случае, если ты используешь переменную $_SESSION, то в начале скрипта должен быть вызов session_start() Допустим, ты это не показал, но session_start() есть ))) В случае верного логина и пароля (аутентификация) должен происходить переход на страницу index.php где вероятно есть проверка значения из $_SESSION ( авторизация) — ты этого тоже не показал. Поэтому хз чего ты ожидаешь и что происходит.
Добрый день! 1. Вам правильно подсказал valentinnew. Вы потеряля в тэге form атрибут method. В Вашем случае method по умолчанию get, а в PHP обрабатываете переменные $_POST. 2. По регистрации Советую Вам: 2.1 Делать её в два шага - в начале вводить мэйл и отправлять на него код подтверждения, а затем вводить этот код и сравнивать его с отправленным, и только в случае совпадения завершать регистрацию. 2.2. Пароль лучше не сохранять в БД в явном виде. Вы можете использовать для сохранения пароля функцию PHP: password_hash($_POST["$_POST['password']"], PASSWORD_DEFAULT); a для проверки введённого пароля функцию PHP: password_verify($_POST['password'], $password) 3. Про SQL инъекции. https://www.ptsecurity.com/upload/corporate/ru-ru/analytics/PT-devteev-Advanced-SQL-Injection.pdf Например, в Вашем коде: PHP: $query = "SELECT * FROM users WHERE login='$login'"; Попробуйте сделать так: PHP: <?php include 'connect.php'; if(filter_input(INPUT_POST, 'login')) { $query = "SELECT id, permissions, password FROM `users` WHERE login = ?"; $stmt = $conn->prepare($query); $stmt->execute([$_POST['login']]); $stmt->bind_result($id, $permissions, $password); $stmt->fetch(); if ($password) { if (password_verify($_POST['password'], $password)) { session_start(); $_SESSION['user_id'] = $id; $_SESSION['permissions'] = $permissions; header('Location: index.php'); } else { $message="Incorrect password"; } } else { $message="Not found user"; } echo $message; exit; } Удачи!
header echo error exit норм у всех код --- Добавлено --- во вторых у юзера mysqli, а не PDO достаточно одной строкой оформить https://www.php.net/manual/ru/mysqli.execute-query.php