Як уникнути проблеми пустих полів у формі реєстрації на HTML+PHP+MySQL

Як уникнути проблеми пустих полів у формі реєстрації на HTML+PHP+MySQL

Порожні поля у формі реєстрації — поширена проблема, яка може зіпсувати базу даних і призвести до помилок у роботі сайту. Розглянемо, як захистити свій проект від введення пустих значень, використовуючи перевірки на стороні клієнта та сервера.

1. Перевірка на стороні клієнта (HTML/JavaScript)

HTML дозволяє додати атрибут required, який не дає відправити форму, якщо поле не заповнене:

<form action="register.php" method="post">
    <input type="text" name="username" placeholder="Логін" required>
    <input type="email" name="email" placeholder="Email" required>
    <input type="password" name="password" placeholder="Пароль" required>
    <button type="submit">Реєстрація</button>
</form>

Це швидко і зручно для користувача, але такий захист легко обійти, якщо запит відправляють напряму (наприклад, через Postman або власний скрипт).

2. Перевірка на стороні сервера (PHP)

Сервер завжди має перевіряти введені дані:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = trim($_POST['username']);
    $email    = trim($_POST['email']);
    $password = trim($_POST['password']);

    if (empty($username) || empty($email) || empty($password)) {
        die("Помилка: всі поля обов'язкові!");
    }

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        die("Помилка: невірний email!");
    }

    $password_hash = password_hash($password, PASSWORD_DEFAULT);
    $pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
    $stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
    $stmt->execute([$username, $email, $password_hash]);

    echo "Реєстрація успішна!";
}
?>

3. Висновок

Перевірка на стороні клієнта дає швидкий зворотний зв’язок користувачу, а перевірка на стороні сервера — гарантію безпеки даних. Поєднання обох методів забезпечує надійний захист від пустих полів та зберігає якість бази даних.

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.