Реєстраційна форма PHP з використанням методів GET, POST із прикладом

⚡ Розумний підсумок

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

  • ???? Що роблять форми: HTML-форма збирає введені користувачем дані через такі поля, як текстові поля, прапорці та кнопки, а потім надсилає їх до серверного скрипта.
  • 📬 Метод POST: $_POST надсилає значення в тілі HTTP-повідомлення, keeping їх з URL, що підходить для логінів та конфіденційних даних.
  • 🔗 Метод GET: $_GET додає значення до URL, тому результати можна додавати в закладки, що ідеально підходить для пошукових форм.
  • 🇧🇷 POST проти GET: POST не має практичного обмеження довжини та підтримує багато типів даних; GET коротший, містить лише рядки та видимий.
  • Обробка вхідних даних: Функція isset() перевіряє, чи було поле надіслано перед тим, як скрипт зчитає його значення, та використовує його.
  • ☑️ Прапорці: Прапорець надсилає значення лише тоді, коли він позначений, тому isset() підтверджує, чи погодився користувач, чи вибрав опцію.
  • 🤖 AI Assist: Інструменти штучного інтелекту можуть створювати перевірену, безпечну форму та допомагати діагностувати, чому форма не надсилається належним чином.

Обробка форм PHP

Що таке форма?

Коли ви входите на веб-сайт або у свою поштову скриньку, ви взаємодієте з формою.

Форми використовуються для отримання вхідних даних від користувача та подання їх на веб-сервер для обробки.

Схема, наведена нижче, ілюструє процес обробки форми.

Форма PHP

Форма — це тег 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.

Методи GET проти POST

Методи 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>

Перегляньте наведену вище форму у браузері.

Робота з прапорцями, радіокнопками

Заповніть ім'я та прізвище.

Зауважте, що прапорець «Прийняти умови використання» не встановлено.

Натисніть кнопку "Надіслати".

Ви отримаєте такі результати.

Робота з прапорцями, радіокнопками

Натисніть на посилання «Назад до форми», а потім поставте прапорець.

Робота з прапорцями, радіокнопками

Натисніть кнопку "Надіслати".

Ви отримаєте такі результати.

Робота з прапорцями, радіокнопками

Поширені запитання

$_GET зчитує значення з URL рядок запиту, $_POST зчитує значення з тіла запиту, а $_REQUEST об'єднує дані GET, POST та cookie. Надавайте перевагу конкретному масиву, щоб точно знати, звідки взялося значення.

Ніколи не довіряйте необробленим вхідним даним. Перевіряйте дані за допомогою filter_var() або правил для кожного поля та екрануйте вивід за допомогою htmlspecialchars(), щоб зупинити XSS. Використовуйте підготовлені оператори для запису в базу даних, щоб запобігти SQL-ін'єкціям.

Поширені причини – це метод форми GET замість POST, відсутні атрибути name на вхідних даних, неправильна дія. URL, або відсутній багаточастинний enctype для завантаження файлів. Перевірте кожен із них у своїй формі.

Так. Штучний інтелект може створити HTML-форму, а також виконати перевірку на стороні сервера, захист CSRF та екранований вивід. RevПерегляньте правила для кожного поля та переконайтеся, що перевірки безпеки відповідають вашій програмі перед розгортанням.

Так. Поділіться формою та обробником, і ШІ зможе виявити невідповідність методів, відсутній атрибут імені, неправильний шлях дії або гілку перевірки, яка блокує надсилання, а потім запропонувати виправлення.

Підсумуйте цей пост за допомогою: