PHP Manual

Форми, обробка форм на PHP

22. 08. 2019

Припустимо, ми створили HTML-форму, яку відправляємо, і тепер хочемо обробити дані. Про створення HTML-форми є окрема стаття.

Отримання даних - різні способи

Спосіб відправки форми задається безпосередньо в HTML

Є 2 варіанти:

  • GET - видно в адресному рядку після знаку питання Наприклад: php.baraja.cz/search.php?query=formulare.
  • POST - Прихований (невидимий), більшість форм надсилається поштою

Потім ми повинні прочитати їх в PHP, використовуючи той самий метод.

Отримання даних від користувача і передача їх скрипту

Основою є HTML-форма, як її зробити можна прочитати в окремій статті.

Для початку візьмемо просту форму для введення імені користувача:

<form action="welcome.php" method="GET">
Zadejte jméno: <input type="text" name="username">
<input type="submit" value="odeslat">
</form>

З'явиться текстове вікно для введення імені та натискання кнопки "Надіслати". При натисканні на кнопку вміст поля відправляється на скрипт welcome.php.

Тепер щодо власне обробки у файлі welcome.php:

$username = $_GET['ім'я користувача'];
echo 'Введіть ім'я:' . $username;

Зверніть увагу на спеціальну змінну $_GET. Це надглобальна змінна, яка містить дані з форми і до якої можна отримати доступ як до масиву.

Проблема з цим рішенням, однак, полягає в тому, що отримані дані є небезпечними і подібна форма може бути легко атакована. Наприклад, потенційний зловмисник може ввести в поле замість імені код javascript, який буде записаний на сторінку і виконаний.

Тому ми завжди повинні дезінфікувати будь-які дані користувача перед тим, як виводити їх в HTML-код:

$username = $_GET['ім'я користувача'] ?? 'Невідомо';
echo 'Введіть ім'я:' . htmlspecialchars($username);

Подальша обробка

З отриманими даними ми можемо робити все, що завгодно, і поводитися з ними, як з будь-якою звичайною змінною.

Наприклад, додати значення в два поля:

echo $_GET['x'] + $_GET['y'];

Або зберегти у файл, базу даних, на електронну пошту, ...

Для цього корисними є наступні функції:

  • file_put_contents - функція збереження даних у файл
  • MD5 - обчислення контрольної суми, наприклад, для паролів
  • Cookies - зберегти дані в cookies (невеликі файли всередині веб-браузера)

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024