@thesirvlad

Почему не записываются буквы при регистрации?

Здравствуйте, сделал регистрацию на сайте, когда в инпут с именем и фамилией ввожу цифры, то они записываются в бд, а когда пишу буквы, то не записываются. Не могу понять где ошибка, помогите пожалуйста.
<input class="input-form" placeholder="Введите почту"  type="email" name="email"> <br>
                
                <input class="input-form" placeholder="Введите пароль" type="password" name="password"> <br>
                <input class="input-form" placeholder="Повторите пароль" type="password" name="password2"> <br>
            
                <input class="input-form" placeholder="Введите Имя" name="name">
                <input class="input-form" placeholder="Введите Фамилию" name="surname"> <br>

if (isset($_POST['register'])) {
        $name = $_POST['name'];
        $surname = $_POST['surname'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $password2 = $_POST['password2'];
        $passwordready = md5($password);
    if (mb_strlen($password) < 6 | mb_strlen($password) > 50 ) {
     $_SESSION['message'] = 'Недопустимая длина пароля (От 6-20 символов )';
     header('Location: ../reg');
    }
    $check_email = mysqli_query($db, "SELECT * FROM `users` WHERE `email` = '$email'");
  if (mysqli_num_rows($check_email) > 0) {
     $response = [
         "status" => false,
         "type" => 1,
         "message" => "Аккаунт с такой почтой уже существует",
         "fields" => ['email']
     ];
     echo '<p class="msg">' . $response['message'] . '</p>';
     die();
  }
    
    if ($password === $password2) {
  
  
     mysqli_query($db, "INSERT INTO `users` (`email`, `name`, `surname`, `password`, `date`) VALUES ('$email', '$name', $surname, '$passwordready', NOW())");
     echo '<script>alert("Регистрация прошла успешно");</script>';
     echo '<script>window.location= "/auth";</script>';
  
  
    } else {
     echo '<script>alert("Пароли не совпадают!");</script>';
     echo '<script>window.location= "/reg";</script>';
    }
  }
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Кавычки вокруг $surname потерял при составлении SQL-запроса.
https://habr.com/ru/post/662523/ - начни с этого, чтоб такого не было
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Уж сколько раз твердили миру...
На конференции к звездам надо приходить запросы надо выполнять подготовленными.
А не вот это вот всё.
Иначе проблемы с буквами покажутся детской щекоткой.
Какой вообще смысл делать регистрацию, если любой школьник сможет войти под чужой учёткой вообще без пароля, через простейшую SQL инъекцию?

Надо забыть про mysqli_query и освоить функции prepare(), bind_param(), и execute(). Причём не только для insert, но и для select тоже. Потому что через него можно будет повытаскивать все пароли. Поскольку они ещё и не захэшированы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽