Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода — текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.
Создание форм состоит из следующих аспектов:
Создание элемента в разметке HTML
Добавление в этот элемент одно или несколько поле ввода
Установка метода передачи данных. Чаще всего используются методы GET или POST
Установка адреса, на который будут отправляться введенные данные
POST-запросы
Итак, создадим новую форму. Для этого определим новый файл form.php , в которое поместим следующее содержимое:
Форма ввода данных
Имя:
Возраст:
Атрибут action=»user.php» элемента form указывает, что данные формы будет обрабатывать скрипт user.php , который будет находиться с файлом form.php в одной папке. А атрибут method=»POST» указывает, что в качестве метода передачи данных будет применяться метод POST.
Теперь определим файл user.php , который будет иметь следующее содержание:
Для обработки запросов типа POST в PHP используется встроенная глобальная переменная $_POST . Она представляет ассоциативный массив данных, переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов name у полей ввода формы.
Например, так как атрибут name поля ввода возраста имеет значение age ( ), то в массиве $_POST значение этого поля будет представлять ключ «age»: $_POST[«age»]
И поскольку возможны ситуации, когда поле ввода будет не установлено, то в этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset() . И если переменная установлена, то функция isset() возвратит значение true .
Теперь мы можем обратиться к скрипту form.php и ввести в форму какие-нибудь данные:
И по нажатию кнопки введенные данные методом POST будут отправлены скрипту user.php :
Необязательно отправлять данные формы другому скрипту, можно данные формы обработать в том же файле формы. Для этого изменим файл form.php следующим образом:
Поскольку в данном случае мы отправляем данные этому же скрипту — то есть по тому же адресу, то у элемента форма можно не устанавливать атрибут action .
Стоит отметить, что в принципе мы можем отправлять формы и запросом GET, в этом случае для получения тех же значений формы применяется массив $_GET , который был рассмотрен в прошлой теме:
При передачи данных формы на сервер формируются суперглобальные переменные — ассоциативные массивы, содержащие передаваемые значения:
$_GET[] — ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы GET .
$_POST[] – ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы POST .
$_REQUEST[] – ассоциативный массив, который содержит все значение, передаваемые в сценарий с помощью методов POST и GET .
Рассмотрим пример использования метода GET
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод GET )
Выполнение: Файл index.html
formaction="answer.php"method="get"> Имя br>input type="text"name="Firstname" >br> Фамилия br> inputtype="text"name="Lastname" >br> E-mailbr> inputtype="text"name="email">br> inputtype="submit"name="submit"value="Отправить"> /form>
Рассмотрим тот же самый пример с использованием метода POST
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод POST )
Выполнение: Файл index.html
formaction="answer.php"method="post"> Имя br>input type="text"name="Firstname">br> Фамилия br> inputtype="text"name="Lastname">br> E-mailbr> inputtype="text"name="email">br> inputtype="submit"name="submit"value="Отправить"> /form>
Пример: В файле index.html находится форма для заполнения данных пользователем. В файле abswer.php разработать скрипт обработки данных формы с выводом введенных пользователем значений (использовать метод REQUEST )
Выполнение: Файл index.html
formaction="answer.php"method="post"> Имя br>input type="text"name="Firstname">br> Фамилия br> inputtype="text"name="Lastname">br> E-mailbr> inputtype="text"name="email">br> inputtype="submit"name="submit"value="Отправить"> /form>
is_string(string) – определяет, является ли переменная string строкой. Возвращает значение true или false .
is_int(string) или is_integer(string) – определяет, является ли переменная string целым числом. Возвращает значение true или false .
is_numeric(string) – определяет, является ли переменная string числовой строкой. Возвращает значение true или false .
is_double(string) или is_float(string) – определяет, является ли переменная string числом с плавающей точкой. Возвращает значение true или false
был ли отправлен запрос при щелчке на кнопке
были ли поля заполнены цифрами, а не другими символами
Создайте файл calculator.php
Для построения формы воспользуйтесь конструкцией:
echo$_SERVER['PHP_SELF'];?>" method="post">
Лабораторная работа 8_2 (сложный вариант): Написать интерфейс, который позволял бы создавать html-формы. Пользователь выбирает, какие элементы и в каком количестве нужно создать, придумывает им названия, а программа сама генерирует требуемую форму.
выбор типов элементов ввода и их количества (task_form.html);
task_form.html: Результат:
ask_names.php:
При создании двух элементов типа «текстовая строка» и одного элемента типа «текстовая область» получим (рис. 8). Введем в эту форму, например, строки «Название», «Автор» и «Краткое содержание». Эти данные будет обрабатывать скрипт task.php.
рис. 8. Промежуточные результаты
Результатом работы скрипта с входными данными, приведенными выше, будет следующая форма:
Лабораторная работа 8_3 (легкий вариант): Средствами PHP разработать простой валютный калькулятор, который конвертирует различные валюты в рубли (см. рисунок). Форму калькулятора и скрипт обработки поместить в один файл, используя функцию:
Валютный калькулятор на php
Лабораторная работа 8_4: Заменить фреймовую структуру с меню, на работу с одним файлом php.
Откройте файл в котором формируется меню.
Измените значения всех элементов массива на index.php
Добавьте к значению «index.php» параметр id , передаваемый методом GET
Прежде чем браузер отправит информацию, он кодирует ее, используя схему, называемую кодировкой URL-адресов. В этой схеме пары имя / значение объединяются знаком равно, а разные пары разделяются амперсандом: name1=value1&name2=value2&name3=value3.
Метод GET создает длинную строку, которая отображает в логах сервера и в адресной сторке браузера.
Метод GET предназначен для отправки только до 1024 символов.
Никогда не используйте метод GET, если вам нужно отправить на сервер пароль или другую конфиденциальную информацию.
Курс «PHP-разработчик с нуля»
— Научитесь создавать сайты и веб-приложения на языке PHP.
— Изучите актуальные фреймворки Laravel, Simfony и Yii2.
— 78 часов теории и 361 час практики.
— Вы создадите 5 масштабных проектов для портфолио.
— Помощь с поиском работы или стажировки.
Курс «SQL и получение данных»
— Освоите один из основных инструментов работы с данными.
— 20 часов теории, 32 часа практики.
— Видеолекции, вебинары, практические задания и тренажёр.
— Выполните 6 домашних работ и итоговый проект.
— Помощь с поиском работы или стажировки.
Курс «веб-разработчик с нуля»
— Научитесь программировать на JavaScript и PHP.
— Сможете создавать сайты и веб-приложения.
— Сможете уверенно работать и с фронтендом, и с бэкендом веб-сервисов.
— Выполните 9 масштабных проектов для портфолио
— Помощь с поиском работы или стажировки.
GET не может использоваться для отправки на сервер двоичных данных, таких как изображения или текстовые документы.
Доступ к данным, отправленным через метод GET, можно получить с помощью переменной среды QUERY_STRING.
PHP предоставляет ассоциативный массив $_GET для доступа ко всей информации, отправляемой с использованием метода GET.
Посмотрите следующий пример и попробуйте поместить исходный код в скрипт test.php.