За последние 24 часа нас посетили 20407 программистов и 1092 робота. Сейчас ищут 849 программистов ...

Не сохраняются данные с формы PHP в MYSQL

Тема в разделе "PHP и базы данных", создана пользователем Яна Литвинова, 22 июн 2022.

  1. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    Всем добрый день! Помогите пожалуйста, в форме регистрации. Форму делала по видео уроку -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!"}
     

    Вложения:

    • auth.zip
      Размер файла:
      576,8 КБ
      Просмотров:
      5
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    ну прочтите ж что написано.... это unicode
     
  3. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Сообщение содержит текст:
    Код (Text):
    1. {"status":false,"type":2,"message":"Ошибка при загрузке аватарки"}{"status":true,"message":"Регистрация прошла успешно!"}
    У Вас новый пользователь в БД добавляется?
     
  4. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    да добавляться, но только с тех полей которые были в исходники
    --- Добавлено ---
    что это означает? кодировку надо изменить?
     
  5. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Не совсем понимаю Ваш ответ. Какие исходники? То что в видео уроке было изначально? А Ваши дополнительные поля не добавляются?
    P.S. Лучше вставляйте код через </> на форуме, в архивах трудно что понять, да и если через код будете ошибки и исходники показывать, желающих подсказать будет больше...
     
  6. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    Вот есть такая форма регистрации на 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>
    </>
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    надеюсь вы понимаете, что просто добавить новые поля в форме - это ничтожно мало?
    нужно как минимум:
    - добавить соответсвующие поля в соответсвующую таблицу БД, чтоб было где ххранить эти значения
    - добавить в обработчик серверный (php скрипт) необходимые проверки для этих поле (если нужно конечно)
    - добавить в запрос insert новые поля по аналогии с старыми

    насчет кодировки - нам неизвестно какую вы используете и нужно ли что-то менять
     
    Zlata Jesen нравится это.
  8. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    в файле - "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')");
    --- Добавлено ---
    в таблицу все поля добавила с таккими же названиями
     
  9. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    ну вы сопоставьте имена в форме и что тут?
    в форме - gender_id, а в обработчике уже gender
    да и вообще все новые поля у вас с этим именем gender_id .... дайте какие нужно
     
  10. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    спасибо большое! исправила и все заработало! но после нажатия ошибка эта не исчезла и авторизация перестала работать(
     

    Вложения:

  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    значит именно так и написано в коде.... смотрите строчка за строчкой, при необходимости выводите промежуточные переменные...
    отлаживайте короче)
     
  12. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    не могу понять в чем ошибка? status":false,"type":1,"message":"
     
  13. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Какой файл в вашем архиве отвечает за авторизацию? Наверняка где то там указано, что если логин или пароль не совпадает с БД, то выводить текст который вы видите...
     
  14. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    помогите плиззз, с этой ошибкой 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 минуты)
    --- Добавлено ---
    нет, в том то и дело что они совпадают с БД, но ошибка так и выводится
     
  15. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.817
    Симпатии:
    735
    Адрес:
    Татарстан
    вы реально думаете - кто то будет смотреть это видео? Оно нам надо?
    signup.php полностью покажите
    и научитесь пользоваться тегами в встроенном редакторе форума, иначе никто смотреть не будет особо, да и модераторы ай-яй-яй могут сделать
     
  16. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    извините пожалуйста... Проблема в том что после регистрации выходит это сообщение "{"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):
    1. <?php
    2.  
    3. session_start();
    4. require_once 'connect.php';
    5.  
    6. $full_name = $_POST['full_name'];
    7. $login = $_POST['login'];
    8. $email = $_POST['email'];
    9. $password = $_POST['password'];
    10. $password_confirm = $_POST['password_confirm'];
    11.  
    12. $check_login = mysqli_query($connect, "SELECT * FROM `users` WHERE `login` = '$login'");
    13. if (mysqli_num_rows($check_login) > 0) {
    14.     $response = [
    15.         "status" => false,
    16.         "type" => 1,
    17.         "message" => "Такой логин уже существует",
    18.         "fields" => ['login']
    19.     ];
    20.  
    21.     echo json_encode($response);
    22.     die();
    23. }
    24.  
    25. $error_fields = [];
    26.  
    27. if ($login === '') {
    28.     $error_fields[] = 'login';
    29. }
    30.  
    31. if ($password === '') {
    32.     $error_fields[] = 'password';
    33. }
    34.  
    35. if ($full_name === '') {
    36.     $error_fields[] = 'full_name';
    37. }
    38.  
    39. if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    40.     $error_fields[] = 'email';
    41. }
    42.  
    43. if ($password_confirm === '') {
    44.     $error_fields[] = 'password_confirm';
    45. }
    46.  
    47. if (!$_FILES['avatar']) {
    48.     $error_fields[] = 'avatar';
    49. }
    50.  
    51. if (!empty($error_fields)) {
    52.     $response = [
    53.         "status" => false,
    54.         "type" => 1,
    55.         "message" => "Проверьте правильность полей",
    56.         "fields" => $error_fields
    57.     ];
    58.  
    59.     echo json_encode($response);
    60.  
    61.     die();
    62. }
    63.  
    64. if ($password === $password_confirm) {
    65.  
    66.     $path = 'uploads/' . time() . $_FILES['avatar']['name'];
    67.     if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) {
    68.         $response = [
    69.             "status" => false,
    70.             "type" => 2,
    71.             "message" => "Ошибка при загрузке аватарки",
    72.         ];
    73.         echo json_encode($response);
    74.     }
    75.  
    76.     $password = md5($password);
    77.  
    78.     mysqli_query($connect, "INSERT INTO `users` (`id`, `full_name`, `login`, `email`, `password`, `avatar`) VALUES (NULL, '$full_name', '$login', '$email', '$password', '$path')");
    79.  
    80.     $response = [
    81.         "status" => true,
    82.         "message" => "Регистрация прошла успешно!",
    83.     ];
    84.     echo json_encode($response);
    85.  
    86.  
    87. } else {
    88.     $response = [
    89.         "status" => false,
    90.         "message" => "Пароли не совпадают",
    91.     ];
    92.     echo json_encode($response);
    93. }
    94.  
    95. ?>
     
  17. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    По вашему коду в signup.php всё отрабатывает...Когда вы делаете успешную запись в БД, у вас отрабатывает 84 строка кода:
    Код (Text):
    1. echo json_encode($response);
    Поэтому вы видите сообщение...
    Замените:
    Код (Text):
    1. echo json_encode($response);
    на:
    Код (Text):
    1. header("Location: ВАША_ФОРМА_АВТОРИЗАЦИИ.php");
    И после успешной записи в БД, в попадете на нужную вам страничку...
     
    #17 Reken, 22 июн 2022
    Последнее редактирование: 22 июн 2022
    Яна Литвинова нравится это.
  18. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    сделала как вы написали, но вышла ошибка {"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):
    1. <?php
    2.  
    3. session_start();
    4. require_once 'connect.php';
    5.  
    6. $full_name = $_POST['full_name'];
    7. $login = $_POST['login'];
    8. $email = $_POST['email'];
    9. $password = $_POST['password'];
    10. $password_confirm = $_POST['password_confirm'];
    11. $sex = $_POST['sex'];
    12. $gender = $_POST['gender'];
    13. $relatives = $_POST['relatives'];
    14. $performance = $_POST['performance'];
    15. $dream = $_POST['dream'];
    16. $condition = $_POST['condition'];
    17.  
    18. $check_login = mysqli_query($connect, "SELECT * FROM `users` WHERE `login` = '$login'");
    19. if (mysqli_num_rows($check_login) > 0) {
    20.     $response = [
    21.         "status" => false,
    22.         "type" => 1,
    23.         "message" => "Такой логин уже существует",
    24.         "fields" => ['login']
    25.     ];
    26.  
    27.     echo json_encode($response);
    28.     die();
    29. }
    30.  
    31. $error_fields = [];
    32.  
    33. if ($login === '') {
    34.     $error_fields[] = 'login';
    35. }
    36.  
    37. if ($password === '') {
    38.     $error_fields[] = 'password';
    39. }
    40.  
    41. if ($full_name === '') {
    42.     $error_fields[] = 'full_name';
    43. }
    44.  
    45. if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    46.     $error_fields[] = 'email';
    47. }
    48.  
    49. if ($password_confirm === '') {
    50.     $error_fields[] = 'password_confirm';
    51. }
    52.  
    53. if (!$_FILES['avatar']) {
    54.     $error_fields[] = 'avatar';
    55. }
    56. if ($sex === '') {
    57.     $error_fields[] = 'sex';
    58. }
    59.  
    60. if ($gender === '') {
    61.     $error_fields[] = 'gender';
    62. }
    63.  
    64. if ($relatives === '') {
    65.     $error_fields[] = 'relatives';
    66. }
    67.  
    68. if ($performance === '') {
    69.     $error_fields[] = 'performance';
    70. }
    71.  
    72. if ($dream === '') {
    73.     $error_fields[] = 'dream';
    74. }
    75.  
    76. if ($condition === '') {
    77.     $error_fields[] = 'condition';
    78. }
    79.  
    80. if (!empty($error_fields)) {
    81.     $response = [
    82.         "status" => false,
    83.         "type" => 1,
    84.         "message" => "Проверьте правильность полей",
    85.         "fields" => $error_fields
    86.     ];
    87.  
    88.     echo json_encode($response);
    89.  
    90.     die();
    91. }
    92.  
    93.  
    94. if ($password === $password_confirm) {
    95.  
    96.     $path = 'uploads/' . time() . $_FILES['avatar']['name'];
    97.     if (!move_uploaded_file($_FILES['avatar']['tmp_name'], '../' . $path)) {
    98.         $response = [
    99.             "status" => false,
    100.             "type" => 2,
    101.             "message" => "Ошибка при загрузке аватарки",
    102.         ];
    103.         echo json_encode($response);
    104.     }
    105.  
    106.     $password = md5($password);
    107.  
    108.     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')");
    109.    
    110.        $response = [
    111.         "status" => true,
    112.         "message" => "Регистрация прошла успешно!",
    113.     ];
    114.     header("Location: ../index.php");
    115.  
    116.  
    117. } else {
    118.     $response = [
    119.         "status" => false,
    120.         "message" => "Пароли не совпадают",
    121.     ];
    122.     echo json_encode($response);
    123.  
    124. }
    125.  
    126. ?>
     
  19. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Попробуйте закомментировать строки под номерами 27, 88 и 103
     
  20. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    все получилось! спасибо вам БОЛЬШОЕ!!!
    как превратить такие сообщения об ошибке в более нормальный вид? {"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"]}
     
  21. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Используйте вместо echo json_encode($response) конструкцию:
    Код (Text):
    1.     echo "<pre>";
    2.     var_dump($response);
    После этого крякозябры должны исчезнуть...
     
    Яна Литвинова нравится это.
  22. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    к сожалению не помогло. также выходят такие крякозябры((
    {"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"]}
     
  23. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Что то у вас с кодировкой. Как вариант, попробуйте после старта сессии, указать в коде:
    Код (Text):
    1. mb_internal_encoding("UTF-8");
     
  24. Яна Литвинова

    Яна Литвинова Новичок

    С нами с:
    12 июн 2022
    Сообщения:
    25
    Симпатии:
    0
    указала, все также( выдает такую ошибку "{"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):
    1. <?php
    2. session_start();
    3. mb_internal_encoding("UTF-8");
    4. if ($_SESSION['user']) {
    5.     header('Location: profile.php');
    6. }
     
  25. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    А вы файлики с расширением php, в кодировке UTF-8 создаете? Может в этом дело? Нужно в UTF-8