Робота з формами

Одна з найпотужніших особливостей PHP - це її спосіб обробки HTML-форм. Важливо знати, що будь-який елемент форми автоматично стає доступним для скрипта PHP. Докладну інформацію та приклади використання форм в PHP можна прочитати в розділі Змінні, отримані зі зовнішніх джерел. Тут ми продемонструємо приклади HTML-форм:

Приклад #1 Проста HTML-форма

<form action="action.php" method="post">
    <label for="name">Ваше ім'я:</label>
    <input name="name" id="name" type="text">

    <label for="age">Ваш вік:</label>
    <input name="age" id="age" type="number">

    <button type="submit">Надіслати</button>
</form>

В цій формі немає нічого особливого. Це звичайна HTML-форма без будь-яких спеціальних тегів. Коли користувач заповнить цю форму і натисне кнопку відправлення, буде викликано сторінку action.php. В цьому файлі можна написати щось таке:

Приклад #2 Друк даних з нашої форми

Привіт, <?php echo htmlspecialchars($_POST['name']); ?>.
Вам <?php echo (int) $_POST['age']; ?> років.

Зразок виводу цього скрипта:

Привіт, Костя. Вам 34 роки.

Записи в цьому скрипті, окрім htmlspecialchars() та (int), мають бути зрозумілими. Функція htmlspecialchars() гарантує, що будь-який введений символ, який є спеціальним в HTML, правильно кодується, щоб ніхто не зміг ввести теги HTML чи Javascript на вашій сторінці. Оскільки ми знаємо, що поле "age" має бути числовим, ми просто конвертуємо його значення в int, і таким чином позбуваємось від будь-яких сторонніх символів. PHP може це робити автоматично, якщо встановити розширення filter. Змінні $_POST['name'] та $_POST['age'] автоматично ініціалізує PHP. Раніше ми використовували суперглобальну змінну $_SERVER; вище ми ввели просто ще одну суперглобальну змінну $_POST, котра містить всі відправлені POST-дані. Зауважте, що method нашої форми вказано як POST. Якщо ми використовуємо метод GET, то дані форми будуть знаходитись в іншій суперглобальній змінній — в $_GET. Ще можна використовувати суперглобальну змінну $_REQUEST, якщо ви не впевнені, яким методом відправлено вам дані. Ця змінна містить об'єднані дані від методів GET, POST та COOKIE.