Тема: Валідація даних форми. Перевірка, чи не відправив користувач порожні поля, та безпечне виведення повідомлень про помилки над формою.
Мета: Ознайомитись із методами захисту та санації (очищення) введених користувачем даних, навчитись обробляти помилкові запити на стороні сервера (Backend Validation).
Технологічний стек: PHP (empty(), htmlspecialchars(), trim()), HTML5.
$errors.Відкрийте файл create.php. У блоці обробки POST-запиту, перед тим як почати перевірки, очистіть отримані дані за допомогою суперглобального масиву $_POST:
trim($_POST['title']) — видаляє зайві пробіли на початку та в кінці введеного рядка.htmlspecialchars($cleanString) — перетворює спеціальні символи (наприклад, <script>) на безпечні HTML-сутності, унеможливлюючи XSS-атаки.Збережіть очищені значення в окремі змінні, наприклад $title = htmlspecialchars(trim($_POST['title']));.
Оголосіть порожній масив $errors = []; до обробки форми.
Перевірте кожне отримане та очищене поле. Функція empty($title) перевіряє, чи змінна є “порожньою”. Якщо поле Назва або Опис порожні, додайте новий рядок із текстом помилки в масив $errors:
$errors[] = "Поле Назва є обов'язковим для заповнення!";
У HTML-коді сторінки, безпосередньо над тегом <form>, перевірте, чи існують елементи у масиві помилок (if (!empty($errors))). Якщо так, запустіть цикл foreach та виведіть кожну помилку.
Огорніть виведення у <div> із червоним стилем (наприклад, <div class="alert alert-danger">), щоб користувач чітко бачив проблему.
Завдання з “зірочкою” (необов’язкове для мінімальної оцінки, але рекомендоване).
Якщо форма не проходить валідацію, усі поля автоматично очищуються. Зробіть так, щоб користувач не втрачав введений текст: додайте у поля <input value="..."> або <textarea> ... </textarea> в атрибути або всередину тегу попередньо введене значення, якщо воно наявне (<?= $title ?? "" ?>). Порожній оператор об’єднання з null ?? не видає помилку “Undefined variable”, а виведе порожній рядок.
required в HTML / або на JS) та на бекенді (PHP)?required-валідацію?trim()? Яку конкретну проблему (наприклад, при реєстрації пароля чи логіна) вона вирішує?htmlspecialchars()? Наведіть приклад “поганого” тексту, який міг би зламати відображення сайту без цього захисту.die() чи exit() при першій-ліпшій невідповідності?lab7.md винести фрагмент коду вашого блоку валідації (if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }).