Всем добрый день! Помогите пожалуйста, в форме регистрации. Форму делала по видео уроку -https://www.youtube.com/watch?v=eCItZh6uMVc. Добавила дополнительные поля с выпадающим списками, в коде добавила sql запрос. после нажатия кнопки регистрации выходит сообщение - {"status":false,"type":2,"message":"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0430\u0432\u0430\u0442\u0430\u0440\u043a\u0438"}{"status":true,"message":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e!"}
Сообщение содержит текст: Код (Text): {"status":false,"type":2,"message":"Ошибка при загрузке аватарки"}{"status":true,"message":"Регистрация прошла успешно!"} У Вас новый пользователь в БД добавляется?
да добавляться, но только с тех полей которые были в исходники --- Добавлено --- что это означает? кодировку надо изменить?
Не совсем понимаю Ваш ответ. Какие исходники? То что в видео уроке было изначально? А Ваши дополнительные поля не добавляются? P.S. Лучше вставляйте код через </> на форуме, в архивах трудно что понять, да и если через код будете ошибки и исходники показывать, желающих подсказать будет больше...
Вот есть такая форма регистрации на PHP. В нее я добавила еще 6 полей, выделила жирным. <> <?php session_start(); if ($_SESSION['user']) { header('Location: profile.php'); } ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Система тестирования</title> <link rel="stylesheet" href="assets/css/main.css"> <style> #user { width: 300px; text-align: center; margin: 0 auto; font-family: var(--bs-font-sans-serif); font-size: 18px; font-weight: 500; } </style> </head> <body> <!-- Форма регистрации --> <form action="vendor/signup.php" method="post" enctype="multipart/form-data"> <label id="user" style="color:#0B5ED7">ФИО</label> <input type="text" name="full_name" placeholder="Введите свое полное имя" id="user"> <label id="user" style="color:#0B5ED7">Логин</label> <input type="text" name="login" placeholder="Введите свой логин" id="user"> <label id="user" style="color:#0B5ED7">Пароль</label> <input type="password" name="password" placeholder="Введите пароль" id="user"> <label id="user" style="color:#0B5ED7">Подтверждение пароля</label> <input type="password" name="password_confirm" placeholder="Подтвердите пароль" id="user"> <label id="user" style="color:#0B5ED7">Почта</label> <input type="email" name="email" placeholder="Введите адрес своей почты" id="user"> <label id="user" style="color:#0B5ED7">Изображение профиля</label> <input type="file" name="avatar" id="user"> <label id="user" style="color:#0B5ED7">Ваш пол?</label> <select class="form-control" name="gender_id" id="user"> <option value="1">Мужской <option value="2">Женский </select> <label id="user" style="color:#0B5ED7">В данный момент я живу....</label> <select class="form-control" name="gender_id" id="user"> <option value="1">С обоими моими родителями <option value="2">С одним из родителей <option value="3">С другими родственниками <option value="4">В приемной семье <option value="5">В общежитии </select> <label id="user" style="color:#0B5ED7">Есть ли у Вас братья и/ или сестры?</label> <select class="form-control" name="gender_id" id="user"> <option value="1">Нет <option value="2">Да, один брат или сестра <option value="3">Да, у меня двое или больше чем двое братьев/сестер </select> <label id="user" style="color:#0B5ED7">Моя академическая успеваемость</label> <select class="form-control" name="gender_id" id="user"> <option value="1">Отличная <option value="2">Хорошая <option value="3">Удовлетворительная </select> <label id="user" style="color:#0B5ED7">Мой сон</label> <select class="form-control" name="gender_id" id="user"> <option value="1">Режим сна каждый день у меня одинаковый <option value="2">Режим сна каждый день у меня не одинаковый <option value="3">Каждый день я сплю 6-9 часов <option value="4">Каждый день я сплю 4-5 часов <option value="5">В последнее время я часто не высыпаюсь </select> <label id="user" style="color:#0B5ED7">В целом, как Вы бы описали Ваше состояние здоровья? Пожалуйста, выберите номер от 1 до 7, где 1 соответсвует "Очень плохо" и 7 соответсвует "Очень хорошее"</label> <div class="form-check" id="user" name="condition"> <input class="radio" type="radio" value="1" name="radio-test"/>1 <input class="radio" type="radio" value="2" name="radio-test"/>2 <input class="radio" type="radio" value="3" name="radio-test"/>3 <input class="radio" type="radio" value="4" name="radio-test"/>4 <input class="radio" type="radio" value="5" name="radio-test"/>5 <input class="radio" type="radio" value="4" name="radio-test"/>6 <input class="radio" type="radio" value="5" name="radio-test"/>7 </div> <button type="submit" class="register-btn" id="user" style="background:#0B5ED7; color:#FFFFFF">Пройти опрос</button> <p> У вас уже есть аккаунт? - <a href="/">авторизируйтесь</a>! </p> </form> <script src="assets/js/jquery-3.4.1.min.js"></script> <script src="assets/js/main.js"></script> </body> </html> </>
надеюсь вы понимаете, что просто добавить новые поля в форме - это ничтожно мало? нужно как минимум: - добавить соответсвующие поля в соответсвующую таблицу БД, чтоб было где ххранить эти значения - добавить в обработчик серверный (php скрипт) необходимые проверки для этих поле (если нужно конечно) - добавить в запрос insert новые поля по аналогии с старыми насчет кодировки - нам неизвестно какую вы используете и нужно ли что-то менять
в файле - "vendor/signup.php" добавила переменные выделила жирным и в SQL запросе добавила $sex = $_POST['sex']; $gender = $_POST['gender']; $relatives = $_POST['relatives']; $performance = $_POST['performance']; $dream = $_POST['dream']; $condition = $_POST['condition']; mysqli_query($connect, "INSERTINTO `users` (`id`, `full_name`, `login`, `email`, `password`, `avatar`, `sex`, `gender`, `relatives`, `performance`, `dream`, `condition`) VALUES (NULL, '$full_name', '$login', '$email', '$password', '$path', '$sex', '$gender', '$relatives', '$performance', '$dream', '$condition')"); --- Добавлено --- в таблицу все поля добавила с таккими же названиями
ну вы сопоставьте имена в форме и что тут? в форме - gender_id, а в обработчике уже gender да и вообще все новые поля у вас с этим именем gender_id .... дайте какие нужно
спасибо большое! исправила и все заработало! но после нажатия ошибка эта не исчезла и авторизация перестала работать(
значит именно так и написано в коде.... смотрите строчка за строчкой, при необходимости выводите промежуточные переменные... отлаживайте короче)
Какой файл в вашем архиве отвечает за авторизацию? Наверняка где то там указано, что если логин или пароль не совпадает с БД, то выводить текст который вы видите...
помогите плиззз, с этой ошибкой Parse error: syntax error, unexpected ':', expecting ',' or ')' in C:\Users\Ravil\Desktop\OpenServer\domains\auth\vendor\signup.php on line 119 в файле registr.php пишу как в видео код: <?php if ($_SESSION['message']) { echo '<p class="msg"> ' . $_SESSION['message'] . '</p>'; } unset($_SESSION['message']); ?> в файле signup.php пишу код: } else { $_SESSION['message'] = 'Пароли не совпадают'; //эта 119 строка// header(string: 'Location : ../register.php'); } все как по видео - (с 24 минуты) --- Добавлено --- нет, в том то и дело что они совпадают с БД, но ошибка так и выводится
вы реально думаете - кто то будет смотреть это видео? Оно нам надо? signup.php полностью покажите и научитесь пользоваться тегами в встроенном редакторе форума, иначе никто смотреть не будет особо, да и модераторы ай-яй-яй могут сделать
извините пожалуйста... Проблема в том что после регистрации выходит это сообщение "{"status":true,"message":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e!"}" а надо чтобы после успешной регистрации он попадал на форму авторизации. Спасибо! signup.php полностью Код (Text): <?php session_start(); require_once 'connect.php'; $full_name = $_POST['full_name']; $login = $_POST['login']; $email = $_POST['email']; $password = $_POST['password']; $password_confirm = $_POST['password_confirm']; $check_login = mysqli_query($connect, "SELECT * FROM `users` WHERE `login` = '$login'"); if (mysqli_num_rows($check_login) > 0) { $response = [ "status" => false, "type" => 1, "message" => "Такой логин уже существует", "fields" => ['login'] ]; echo json_encode($response); die(); } $error_fields = []; if ($login === '') { $error_fields[] = 'login'; } if ($password === '') { $error_fields[] = 'password'; } if ($full_name === '') { $error_fields[] = 'full_name'; } if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $error_fields[] = 'email'; } if ($password_confirm === '') { $error_fields[] = 'password_confirm'; } if (!$_FILES['avatar']) { $error_fields[] = 'avatar'; } if (!empty($error_fields)) { $response = [ "status" => false, "type" => 1, "message" => "Проверьте правильность полей", "fields" => $error_fields ]; echo json_encode($response); die(); } if ($password === $password_confirm) { $path = 'uploads/' . time() . $_FILES['avatar']['name']; if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) { $response = [ "status" => false, "type" => 2, "message" => "Ошибка при загрузке аватарки", ]; echo json_encode($response); } $password = md5($password); mysqli_query($connect, "INSERT INTO `users` (`id`, `full_name`, `login`, `email`, `password`, `avatar`) VALUES (NULL, '$full_name', '$login', '$email', '$password', '$path')"); $response = [ "status" => true, "message" => "Регистрация прошла успешно!", ]; echo json_encode($response); } else { $response = [ "status" => false, "message" => "Пароли не совпадают", ]; echo json_encode($response); } ?>
По вашему коду в signup.php всё отрабатывает...Когда вы делаете успешную запись в БД, у вас отрабатывает 84 строка кода: Код (Text): echo json_encode($response); Поэтому вы видите сообщение... Замените: Код (Text): echo json_encode($response); на: Код (Text): header("Location: ВАША_ФОРМА_АВТОРИЗАЦИИ.php"); И после успешной записи в БД, в попадете на нужную вам страничку...
сделала как вы написали, но вышла ошибка {"status":false,"type":2,"message":"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0430\u0432\u0430\u0442\u0430\u0440\u043a\u0438"} Warning: Cannot modify header information - headers already sent by (output started at C:\Users\Ravil\Desktop\OpenServer\domains\auth\vendor\signup.php:103) in C:\Users\Ravil\Desktop\OpenServer\domains\auth\vendor\signup.php on line 114 Код (Text): <?php session_start(); require_once 'connect.php'; $full_name = $_POST['full_name']; $login = $_POST['login']; $email = $_POST['email']; $password = $_POST['password']; $password_confirm = $_POST['password_confirm']; $sex = $_POST['sex']; $gender = $_POST['gender']; $relatives = $_POST['relatives']; $performance = $_POST['performance']; $dream = $_POST['dream']; $condition = $_POST['condition']; $check_login = mysqli_query($connect, "SELECT * FROM `users` WHERE `login` = '$login'"); if (mysqli_num_rows($check_login) > 0) { $response = [ "status" => false, "type" => 1, "message" => "Такой логин уже существует", "fields" => ['login'] ]; echo json_encode($response); die(); } $error_fields = []; if ($login === '') { $error_fields[] = 'login'; } if ($password === '') { $error_fields[] = 'password'; } if ($full_name === '') { $error_fields[] = 'full_name'; } if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $error_fields[] = 'email'; } if ($password_confirm === '') { $error_fields[] = 'password_confirm'; } if (!$_FILES['avatar']) { $error_fields[] = 'avatar'; } if ($sex === '') { $error_fields[] = 'sex'; } if ($gender === '') { $error_fields[] = 'gender'; } if ($relatives === '') { $error_fields[] = 'relatives'; } if ($performance === '') { $error_fields[] = 'performance'; } if ($dream === '') { $error_fields[] = 'dream'; } if ($condition === '') { $error_fields[] = 'condition'; } if (!empty($error_fields)) { $response = [ "status" => false, "type" => 1, "message" => "Проверьте правильность полей", "fields" => $error_fields ]; echo json_encode($response); die(); } if ($password === $password_confirm) { $path = 'uploads/' . time() . $_FILES['avatar']['name']; if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) { $response = [ "status" => false, "type" => 2, "message" => "Ошибка при загрузке аватарки", ]; echo json_encode($response); } $password = md5($password); mysqli_query($connect, "INSERT INTO `users` (`id`, `full_name`, `login`, `email`, `password`, `avatar`, `sex`, `gender`, `relatives`, `performance`, `dream`, `condition`) VALUES (NULL, '$full_name', '$login', '$email', '$password', '$path', '$sex', '$gender', '$relatives', '$performance', '$dream', '$condition')"); $response = [ "status" => true, "message" => "Регистрация прошла успешно!", ]; header("Location: ../index.php"); } else { $response = [ "status" => false, "message" => "Пароли не совпадают", ]; echo json_encode($response); } ?>
все получилось! спасибо вам БОЛЬШОЕ!!! как превратить такие сообщения об ошибке в более нормальный вид? {"status":false,"type":1,"message":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439","fields":["login","password"]}
Используйте вместо echo json_encode($response) конструкцию: Код (Text): echo "<pre>"; var_dump($response); После этого крякозябры должны исчезнуть...
к сожалению не помогло. также выходят такие крякозябры(( {"status":false,"type":1,"message":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439","fields":["login","password"]}
Что то у вас с кодировкой. Как вариант, попробуйте после старта сессии, указать в коде: Код (Text): mb_internal_encoding("UTF-8");
указала, все также( выдает такую ошибку "{"status":false,"type":1,"message":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439","fields":["login","password"]}" Код (Text): <?php session_start(); mb_internal_encoding("UTF-8"); if ($_SESSION['user']) { header('Location: profile.php'); }