За последние 24 часа нас посетили 22984 программиста и 1633 робота. Сейчас ищут 1775 программистов ...

База создаёт пустые строки

Тема в разделе "PHP и базы данных", создана пользователем deaderror, 6 авг 2021.

  1. deaderror

    deaderror Новичок

    С нами с:
    20 июн 2021
    Сообщения:
    16
    Симпатии:
    1
    Всем привет. Я недавно начал изучать PHP. Сейчас решился попробовать написать простенькую регистрацию. Проблема в том, что регистрация проходит успешно. А именно в БД создаются пустые поля.
    Мне просто интересно, есть ли причина этого в чем-то очевидном в MySQL, что я просто упускаю.
    [​IMG]
    HTML:
    1.                 <div class="card-back">
    2.                                     <div class="center-wrap">
    3.                                         <div class="section text-center">
    4.                                             <h4 class="mb-4 pb-3">Sign Up</h4>
    5.                                             <div class="form-group">
    6.                                                 <form action="/inc/signup.php" method="post" enctype="multipart/form-data">
    7.                                                 <input type="text" name="login" class="form-style" placeholder="Your Login" id="login" autocomplete="off">
    8.                                                 <i class="input-icon uil uil-user"></i>
    9.                                             </div>  
    10.                                             <div class="form-group mt-2">
    11.                                                 <input type="email" name="logemail" class="form-style" placeholder="Your Email" id="logemail" autocomplete="off">
    12.                                                 <i class="input-icon uil uil-at"></i>
    13.                                             </div>  
    14.                                             <div class="form-group mt-2">
    15.                                                 <input type="password" name="logpass" class="form-style" placeholder="Your Password" id="logpass" autocomplete="off">
    16.                                                 <i class="input-icon uil uil-lock-alt"></i>
    17.                                             </div>
    18.                                             <a href="/inc/signup.php" class="btn mt-4">send</a>
    19.                                             <?php
    20.                                            if ($_SESSION['message_error']){
    21.                                                 echo '<p class="message_error">' . $_SESSION['message_error'] . '</p>';
    22.                                                                    
    23.                                                                  }
    24.                                
    25.                                                 unset($_SESSION['message_error']);
    26.                                                 ?>
    27.                                             <p class="mesage_error">
    28.  
    29.                                             </p>

    PHP:
    1. <?php
    2.         session_start();
    3.      require_once 'connect.php';
    4.  
    5.      $login = $_POST['login'];
    6.      $logemail = $_POST['logemail'];
    7.      $logpass = $_POST['logpass'];
    8.  
    9.  
    10.  
    11.       mysqli_query($connect, "INSERT INTO `users` (`id`, `login`, `password`, `email`) VALUES (NULL, '$login', '$logemail', '$logpass')");  
    12.  
    13.  
    14.                  $_SESSION['message'] = 'Вы зарегистрированы.';
    15.                  header('Location: ../index.html');
    16.  
    17.  
    18.  
    19.  
    20. ?>
    --- Добавлено ---
    [​IMG]
     
  2. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.491
    Симпатии:
    281
    1. Отправьте форму в тестовый обработчик.
    2. Из данных в тестовом обработчике соберите вручную запрос к базе данных, и протестируйте его в phpMyAdmin. Удалите добавленные данные.
    3. После чего создайте тестовое соединение с базой данных в скрипте php и передайте через него этот же запрос. Удостоверьтесь в phpMyAdmin, что он так же исполняется.
    4. После чего соберите из использованного выше кода ваш скрипт. И снова протестируйте его.
     
    deaderror нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.795
    Симпатии:
    1.331
    Адрес:
    Лень
    изучить как форму отправлять с данными, а не жмакать на ссылку, игнорируя форму
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Классика жанра:
    PHP:
    1.      require_once 'connect.php';
    2.      $login = $_POST['login'];
    3.      $logemail = $_POST['logemail'];
    4.      $logpass = $_POST['logpass'];
    Где вы только находите эту хрень?

    Про SQL-инъекции тоже почитайте.
    --- Добавлено ---
    Шо прям безо всяких условий? Элементарное дублирование идентификационных данных Хто будет проверять? Про прочие сбои я уже молчу.

    Сделайте какую-нибудь обертку с prepare/execute, которая будет возвращать $affected_rows ;)