PHP 8.4.1 Released!

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

Одна з найпотужніших особливостей 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.

add a note

User Contributed Notes 1 note

up
114
sethg at ropine dot com
20 years ago
According to the HTTP specification, you should use the POST method when you're using the form to change the state of something on the server end. For example, if a page has a form to allow users to add their own comments, like this page here, the form should use POST. If you click "Reload" or "Refresh" on a page that you reached through a POST, it's almost always an error -- you shouldn't be posting the same comment twice -- which is why these pages aren't bookmarked or cached.

You should use the GET method when your form is, well, getting something off the server and not actually changing anything. For example, the form for a search engine should use GET, since searching a Web site should not be changing anything that the client might care about, and bookmarking or caching the results of a search-engine query is just as useful as bookmarking or caching a static HTML page.
To Top