Учебники

10) обработка PHP-форм

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

Когда вы входите на веб-сайт или в свой почтовый ящик, вы взаимодействуете с формой.

Формы используются для получения ввода от пользователя и передачи его на веб-сервер для обработки.

 Диаграмма ниже иллюстрирует процесс обработки формы.

Форма PHP

Форма — это тег HTML, который содержит элементы графического интерфейса пользователя, такие как поле ввода, переключатели переключателей и т. Д.

Форма определяется с помощью тегов <form> … </ form>, а элементы графического интерфейса определяются с использованием таких элементов формы, как ввод.

В этом уроке вы узнаете

Когда и почему мы используем формы?

  • Формы пригодятся при разработке гибких и динамических приложений, которые принимают пользовательский ввод.
  • Формы могут быть использованы для редактирования уже существующих данных из базы данных

Создать форму

Мы будем использовать HTML-теги для создания формы. Ниже приведен минимальный список вещей, необходимых для создания формы.

  • Открытие и закрытие тегов формы <form>… </ form>
  • Форма отправки формы 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>

При просмотре вышеуказанного кода в веб-браузере отображается следующая форма.

Форма PHP

ВОТ,

  • <form…>… </ form> являются открывающими и закрывающими тегами формы
  • action = «registration_form.php» method = «POST»> указывает целевой URL и тип отправки.
  • Имя / Фамилия: метки для полей ввода
  • <input type = ”text”…> являются тегами поля ввода
  • <br> это новая строка тега
  • <input type = «hidden» name = «form_submitted» value = «1» /> — это скрытое значение, которое используется для проверки, была ли отправлена ​​форма или нет
  • <input type = «submit» value = «Submit»> — кнопка, которая при нажатии отправляет форму на сервер для обработки

Отправка данных формы на сервер

Атрибут action формы указывает URL отправки, который обрабатывает данные. Атрибут метода указывает тип отправки.

PHP POST метод

  • Это встроенная в PHP суперглобальная переменная массива, которая используется для получения значений, отправленных методом HTTP POST.
  • Доступ к переменной массива возможен из любого скрипта в программе; это имеет глобальную сферу.
  • Этот метод идеален, если вы не хотите отображать значения записей формы в URL.
  • Хорошим примером использования метода post является отправка данных для входа на сервер.

Он имеет следующий синтаксис.

<?php
 $_POST['variable_name'];
?>

  ВОТ,

  • «$ _POST […]» — это массив PHP
  • «Variable_name» — это имя переменной URL.

PHP GET метод

  • Это встроенная в PHP суперглобальная переменная массива, которая используется для получения значений, отправленных методом HTTP GET.
  • Доступ к переменной массива возможен из любого скрипта в программе; это имеет глобальную сферу.
  • Этот метод отображает значения формы в URL.
  • Он идеально подходит для форм поисковых систем, так как позволяет пользователям отмечать результаты.

Он имеет следующий синтаксис.

<?php
$_GET['variable_name'];
?>

  ВОТ,

  • «$ _GET […]» — это массив PHP
  • «Variable_name» — это имя переменной URL.

GET vs POST Методы

ПОСЛЕ ПОЛУЧИТЬ
Значения не видны в URL Значения, видимые в URL
Не имеет ограничения длины значений, так как они отправляются через тело HTTP Имеет ограничение по длине значений обычно 255 символов. Это потому, что значения отображаются в URL. Обратите внимание, что верхний предел символов зависит от браузера.
Имеет более низкую производительность по сравнению с методом Php_GET из-за затрат времени на инкапсуляцию значений Php_POST в теле HTTP Имеет высокую производительность по сравнению с методом POST благодаря простому характеру добавления значений в URL.
Поддерживает множество различных типов данных, таких как строковые, числовые, двоичные и т. Д. Поддерживает только строковые типы данных, потому что значения отображаются в URL
Результаты не могут быть отмечены Результаты могут быть отмечены как книги из-за видимости значений в URL

На диаграмме ниже показана разница между get и post

Форма PHP

 

  Форма PHP

Обработка данных регистрационной формы

Форма регистрации передает данные себе, как указано в атрибуте действия формы.

 Когда форма отправлена, значения заполняются в суперглобальном массиве $ _POST.

Мы будем использовать функцию isset PHP, чтобы проверить, были ли заполнены значения формы в массиве $ _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>

  ВОТ,

  • <? php if (isset ($ _ POST [‘form_submitted’])):?> проверяет, было ли заполнено скрытое поле form_submitted в массиве $ _POST [], и отображает сообщение с благодарностью и именем от имени.

    Если поле form_fobmitted не заполнено в массиве $ _POST [], отображается форма.

Больше примеров

Простой поисковик

Мы разработаем простую поисковую систему, которая использует метод PHP_GET в качестве типа отправки формы.

Для простоты мы будем использовать оператор 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>

Просмотрите вышеуказанную страницу в веб-браузере

Следующая форма будет показана

Форма PHP

Введите GET в верхнем регистре и нажмите кнопку отправки.

Будет показано следующее

Форма PHP

Диаграмма ниже показывает URL для вышеуказанных результатов

Форма PHP

Обратите внимание, что в 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>

Просмотреть вышеуказанную форму в браузере

Форма PHP

Введите имя и фамилию

Обратите внимание, что флажок Согласиться с условиями обслуживания не установлен.

Нажмите на кнопку отправить

Вы получите следующие результаты

Форма PHP

Нажмите обратно на ссылку формы и затем установите флажок

Форма PHP

Нажмите на кнопку отправить

Вы получите следующие результаты

Форма PHP

Резюме

  • Формы используются для получения данных от пользователей
  • Формы создаются с использованием тегов HTML
  • Формы могут быть отправлены на сервер для обработки, используя метод POST или GET
  • Значения формы, отправленные с помощью метода POST, инкапсулированы в теле HTTP.
  • Значения форм, отправленные с помощью метода GET, добавляются и отображаются в URL.