Реєстраційна форма PHP з використанням методів GET, POST із прикладом
⚡ Розумний підсумок
Обробка форм у PHP фіксує введені користувачем дані з HTML-форм та обробляє їх на сервері за допомогою суперглобальних переменних $_POST та $_GET. У цьому покроковому посібнику створено форму реєстрації, пояснюються методи POST та GET, порівнюється їх та показано, як обробляти поля, прапорці та пошуковий ввід.

Що таке форма?
Коли ви входите на веб-сайт або у свою поштову скриньку, ви взаємодієте з формою.
Форми використовуються для отримання вхідних даних від користувача та подання їх на веб-сервер для обробки.
Схема, наведена нижче, ілюструє процес обробки форми.
Форма — це тег HTML, який містить елементи графічного інтерфейсу користувача, такі як поля введення, прапорці, радіокнопки тощо.
Форма визначається за допомогою … Теги та елементи графічного інтерфейсу визначаються за допомогою елементів форми, таких як input.
Коли і чому ми використовуємо форми?
- Форми стають у пригоді під час розробкиping гнучкі та динамічні додатки, що приймають вхідні дані користувача.
- Форми можна використовувати для редагування вже існуючих даних з бази даних.
Створіть форму
Ми будемо використовувати теги HTML для створення форми. Нижче наведено мінімальний перелік того, що потрібно для створення форми.
- Відкриваючі та закриваючі теги форми …
- Тип подання форми POST або GET
- Подання URL який оброблятиме надані дані
- Поля введення, такі як поля введення, текстові області, кнопки, прапорці тощо.
Наведений нижче код створює просту форму реєстрації.
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
Перегляд наведеного вище коду у веб-браузері відображає таку форму.
ТУТ,
- … відкривають і закривають теги форми
- action=”registration_form.php” method=”POST” вказує на місце призначення URL та тип подання.
- Ім'я/Прізвище: це мітки для полів введення
- є тегами поля введення
- це тег нового рядка
- це приховане значення, яке використовується для перевірки того, чи було подано форму
- це кнопка, після натискання якої форма надсилається на сервер для обробки
Відправлення даних форми на сервер
Атрибут action форми визначає процес відправлення URL який обробляє дані. Атрибут method визначає тип подання.
Метод PHP POST
- Це вбудована суперглобальна змінна масиву PHP, яка використовується для отримання значень, що надсилаються через метод HTTP POST.
- Доступ до змінної масиву можна отримати з будь-якого сценарію в програмі; воно має глобальний масштаб.
- Цей метод ідеально підходить, коли ви не хочете відображати значення записів форми в URL.
- Гарним прикладом використання методу POST є надсилання даних для входу на сервер.
Він має такий синтаксис.
<?php
$_POST['variable_name'];
?>
ТУТ,
- «$_POST[…]» – це масив PHP
- «'variable_name'» – це назва поля форми.
Метод PHP GET
- Це вбудована суперглобальна змінна масиву PHP, яка використовується для отримання значень, надісланих через метод HTTP GET.
- Доступ до змінної масиву можна отримати з будь-якого сценарію в програмі; воно має глобальний масштаб.
- Цей метод відображає значення форми в URL.
- Це ідеально підходить для пошукових форм, оскільки дозволяє користувачам додавати результати до закладок.
Він має такий синтаксис.
<?php
$_GET['variable_name'];
?>
ТУТ,
- “$_GET[…]” – це масив PHP
- «'ім'я_змінної'» – це URL ім'я змінної.
Методи GET проти POST
| POST | GET |
|---|---|
| Значення, яких не видно в URL | Значення, видимі в URL |
| Не має обмежень щодо довжини значень, оскільки вони надсилаються через тіло HTTP-запиту | Має обмеження на довжину значень, зазвичай 255 символів. Це пояснюється тим, що значення відображаються в URLЗверніть увагу, що верхня межа символів залежить від браузера. |
| Має нижчу продуктивність порівняно з методом GET через час, витрачений на інкапсуляцію значень POST у тілі HTTP-запиту. | Має вищу продуктивність порівняно з методом POST завдяки простому додаванню значень у URL. |
| Підтримує багато різних типів даних, таких як рядкові, числові, двійкові та інші. | Підтримує лише рядкові типи даних, оскільки значення відображаються в URL |
| Результати не можна додати в закладки | Результати можна додавати до закладок завдяки видимості значень у URL |
На діаграмі нижче показано різницю між GET та POST.
Обробка даних реєстраційної форми
Форма реєстрації надсилає дані собі, як зазначено в атрибуті дії форми.
Після відправлення форми значення заповнюються в суперглобальному масиві $_POST.
Ми використаємо функцію PHP isset, щоб перевірити, чи заповнено значення форми в масиві $_POST, і обробити дані.
Ми змінимо реєстраційну форму, щоб включити PHP-код, який обробляє дані. Нижче наведено змінений код.
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> // this code is executed when the form is submitted <h2>Thank You <?php echo $_POST['firstname']; ?> </h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/registration_form.php">back</a> to the form</p> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
ТУТ,
- перевіряє, чи було заповнено приховане поле form_submitted у масиві $_POST[], та відображає повідомлення з подякою та ім'ям. Якщо поле form_submitted у масиві $_POST[] не було заповнено, форма відображається.
Більше прикладів
Проста пошукова система
Ми розробимо просту пошукову систему, яка використовуватиме метод PHP GET як тип відправлення форми.
Для простоти ми будемо використовувати a PHP-інструкція if щоб визначити вихід.
Ми використаємо той самий HTML-код для реєстраційної форми вище та внесемо в нього мінімальні зміни.
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h2>Search Results For <?php echo $_GET['search_term']; ?> </h2> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/search_engine.php">back</a> to the form</p> <?php else: ?> <h2>Simple Search Engine - Type in GET </h2> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Перегляньте наведену вище сторінку у веббраузері.
Буде показано наступну форму.
Введіть GET великими літерами, а потім натисніть кнопку «Надіслати».
Буде показано наступне.
На діаграмі нижче показано URL для вищезазначених результатів.
Зверніть увагу на URL відобразило значення search_term та form_submitted. Спробуйте ввести щось відмінне від GET, потім натисніть кнопку «Надіслати» та подивіться, які результати ви отримаєте.
Робота з прапорцями, радіокнопками
Якщо користувач не вибирає прапорець або перемикач, значення не надсилається. Якщо користувач вибирає прапорець або перемикач, надсилається значення один (1) або «true».
Ми змінимо код реєстраційної форми та додамо кнопку перевірки, яка дозволить користувачеві погодитися з умовами обслуговування.
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h2>Thank You <?php echo $_POST['firstname']; ?></h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
Перегляньте наведену вище форму у браузері.
Заповніть ім'я та прізвище.
Зауважте, що прапорець «Прийняти умови використання» не встановлено.
Натисніть кнопку "Надіслати".
Ви отримаєте такі результати.
Натисніть на посилання «Назад до форми», а потім поставте прапорець.
Натисніть кнопку "Надіслати".
Ви отримаєте такі результати.










