Типы в формах php

Работа с формами в PHP

Для сбора данных формы используются суперглобальные переменные PHP $_GET и $_POST .

Формы

Формы используют для передачи информации от клиента на сервер. Формы широко используются для регистрации пользователей, отправки комментариев на форумах и социальных сетях, оформления заказов в интернет-магазине и т.д.

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

Практически любой современный сайт содержит как минимум несколько различных HTML-форм.

Подробно ознакомиться с HTML-формами можно здесь.

В приведенном ниже примере отображается простая HTML-форма с двумя полями ввода и кнопкой отправки:

Пример

Обработка данных формы

Когда пользователь заполняет форму и нажимает кнопку «Отправить», данные формы отправляются в PHP-обработчик «action_form.php».

Теперь, когда мы создали форму, нам нужно понять, как обрабатывать данные, введенные пользователем в нашем серверном PHP-скрипте. Существует два механизма передачи данных из HTML-формы на сервер: GET и POST . В нашем примере выше мы указали POST , но в любом случае задача чтения этих данных в нашем PHP-скрипте одинаково проста.

PHP помещает данные из формы в ассоциативный массив (информацию о массивах PHP смотрите в разделе «Массивы PHP» ), к которому можно получить доступ из сценария PHP на стороне сервера. Для методов POST и GET имена переменных массива соответственно $_POST и $_GET .

Чтобы показать пользователю заполненную в форме информацию, мы можем просто отобразить переменные. PHP-обработчик «action_form.php» можно записать так:

Результат обработки данных будет примерно таким:

Вы ввели следующие данные: Имя: Иван Фамилия: Иванов

Такого же результата можно достичь с помощью метода HTTP GET заменив в форме method=»POST» на method=»GET», а в обработчике $_POST на $_GET .

Читайте также:  Java instant minus day

Пример

Php-обработчик «send.php» выглядит так:

В вышеуказанном коде не хватает очень важного: Вам необходимо проверить данные формы, чтобы защитить скрипт от вредоносного кода.

Примечание: Помните о БЕЗОПАСНОСТИ при обработке форм PHP! Правильная проверка вводимой пользователями данных необходима для защиты формы от хакеров и спамеров!

Методы GET и POST

Существуют два способа, с помощью которых клиенты через формы могут отправлять данные на веб-сервер — это методы GET и POST .

Методы GET и POST создают ассоциативный массив (например, array (key1 => value1, key2 => value2, key3 => value3, . )). Массив содержит пары ключ/значение , где ключи — это имена элементов управления формы, а значения — входные данные от пользователя.

И GET и POST рассматриваются как переменные $_GET и $_POST . Это суперглобальные объекты, а это значит, что они всегда доступны, независимо от области видимости — и мы можем получить к ним доступ из любой функции, класса или файла.

$_GET — это массив переменных, переданных текущему скрипту через параметры URL.

$_POST — это массив переменных, переданный текущему скрипту с помощью метода HTTP POST.

Метод GET

Информация, отправленная из формы с помощью метода GET, видна всем — GET создает длинную строку, которая отображается в логах сервера и в адресной строке браузера. Например:

index.html?page=title&name=Nicol

Здесь первая часть строки до символа (?) — это полный путь к файлу, а остальная часть — передаваемые данные. Данные разделяются на блоки «имя=значение» посредством (&) . В данном случае мы получили 2 глобальных переменных $_GET[‘page’] и $_GET[‘name’] , их содержимым являются «title» и «armed» соответственно. Поскольку переменные отображаются в URL-адресе, страницу можно добавить в закладки. В некоторых случаях это может быть полезно.

GET также имеет ограничения на объем отправляемой информации. Метод GET предназначен для отправки только до 1024 символов.

Метод GET не может отправлять на сервер двоичные данные, например изображения или текстовые документы.

Читайте также:  Php перехват ошибок try

GET может использоваться для отправки не конфиденциальных данных.

Примечание: Не используйте метод GET для отправки на сервер паролей или другой конфиденциальной информации!

Метод POST

Метод POST передает информацию через HTTP-заголовки. Информация кодируется и помещается в заголовок QUERY_STRING .

Информация, отправляемая методом POST, проходят через HTTP-заголовок, поэтому уровень безопасности зависит от протокола HTTP. Используя Secure HTTP, можно обеспечить защиту важной информации.

Метод POST, в отличие от GET, не устанавливает ограничения, а значит, если вы передаёте объёмную информацию, то лучше пользоваться именно им.

Так же к преимуществам метода POST стоит отнести возможность передавать файлы на сервер.

Источник

PHP и формы

Ни для кого не является секретом, что наиболее распространенным способом взаимодействия html-страницы с сайтом является форма. Форма (то есть, html-элемент образуемый тегом form) используется и бесплатными почтовыми службами, электронными магазинами и многими другими типами сайтов.

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

Рассмотрим подробнее варианты для разных типов полей.

Текстовые поля

Под текстовыми полями в этой статье понимаются элементы, создаваемые тегам input со значением параметра type равным text и тегом textarea . Организовать обработку формы состоящей из нескольких таких полей проще всего. На листинге ниже приведен листинг с html-разметкой для такой формы.

Как видно из листинга, имена для элементов формы, с точки зрения PHP , являются элементами массива. Поэтому PHP -сценарий, который будет обрабатывать эту форму, будет воспринимать все множество текстовых полей этой формы как единый массив. К отдельным элементам можно обращаться по индексам или использовать перечисление при помощи команд list и each , как это сделано в следующем примере.

Переключатели

Переключателями ( checkbox ) в этой статье называются элементы, создаваемые тегам input со значением параметра type равным checkbox . Форма для использования переменного количества « переключателей » строится абсолютно так же. Обратите внимание, что выбор конкретного значения переключателя (то есть значение свойства value) не важен. Пример приведен в листинге ниже:

Читайте также:  Javascript json not empty

Однако обработка такой формы отличается от обработки, описанной для текстовых полей. В данном случае необходимо определить, включил или нет посетитель сайта тот или иной переключатель. Если включил — то соответствующий элемент массива существует, если нет — то отсутствует. В следующем листинге приведен пример PHP сценария, который распечатывает включенные переключатели:

Радио-кнопки

Перед тем как описывать обработку радио-кнопок необходимо вспомнить, как они работают. Суть радио-кнопок (элементы созданные тегами input со значением параметра type равным radio ) заключается в том что, выбирая одну кнопку, пользователь автоматически снимает выделение с другой кнопки из этого же набора. Кнопки объединяются в набор очень просто: у всех кнопок в наборе одно и тоже имя.

А вот значения (то есть параметры value ) у кнопок в наборе — разные. И на сайт будет отправлено значение выбранной кнопки с именем набора. Так же как и в случае с текстовыми полями и переключателями имена наборов радио-кнопок должны оформляться как имена элементов массива в PHP. Пример такой формы приведен в следующем листинге:

// первый набор кнопок
// второй набор кнопок
// третий набор кнопок

Обработка радио-кнопок объединяет идеи, использование при обработке, как текстовых полей, так и переключателей. Если автор html-страницы не установил значение по умолчанию, а пользователь не выбрал определенную кнопку в наборе радио-кнопок, то данный элемент будет отсутствовать в массиве (как для переключателей).

Если же кнопка выбрана, то соответствующий элемент массива будет содержать ее значение (как для текстовых полей). Ниже приведен листинг примера, обрабатывающего форму с несколькими наборами радио-кнопок.

Таким образом, ничего сложного в обработке сложных форм нет.

Источник

Оцените статью