- Работа с формами в PHP
- Формы
- Пример
- Обработка данных формы
- Пример
- Методы GET и POST
- Метод GET
- Метод POST
- Php объект в формы
- POST-запросы
- Форма ввода данных
- Форма ввода данных
- Форма ввода данных
- Работа с формами в PHP
- Предварительно определенные переменные
- Пример 1
- Обработка ввода пользователя
- Пример 2
- Пример 3.1
- Пример 3.2
- Пример 4. Прием значений от checkbox-флажков
- Пример 5
- Пример 6
- Пример 7. Обработка нажатия на кнопку с использованием оператора ‘@’
- Передача файла на сервер. Залить файл. UpLoad
- Пример 8
Работа с формами в 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 .
Пример
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 не может отправлять на сервер двоичные данные, например изображения или текстовые документы.
GET может использоваться для отправки не конфиденциальных данных.
Примечание: Не используйте метод GET для отправки на сервер паролей или другой конфиденциальной информации!
Метод POST
Метод POST передает информацию через HTTP-заголовки. Информация кодируется и помещается в заголовок QUERY_STRING .
Информация, отправляемая методом POST, проходят через HTTP-заголовок, поэтому уровень безопасности зависит от протокола HTTP. Используя Secure HTTP, можно обеспечить защиту важной информации.
Метод POST, в отличие от GET, не устанавливает ограничения, а значит, если вы передаёте объёмную информацию, то лучше пользоваться именно им.
Так же к преимуществам метода POST стоит отнести возможность передавать файлы на сервер.
Php объект в формы
Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода — текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.
Создание форм состоит из следующих аспектов:
- Создание элемента в разметке HTML
- Добавление в этот элемент одно или несколько поле ввода
- Установка метода передачи данных. Чаще всего используются методы GET или POST
- Установка адреса, на который будут отправляться введенные данные
POST-запросы
Итак, создадим новую форму. Для этого определим новый файл form.php , в которое поместим следующее содержимое:
Форма ввода данных
Имя:
Возраст:
Атрибут action=»user.php» элемента form указывает, что данные формы будет обрабатывать скрипт user.php , который будет находиться с файлом form.php в одной папке. А атрибут method=»POST» указывает, что в качестве метода передачи данных будет применяться метод POST.
Теперь определим файл user.php , который будет иметь следующее содержание:
if(isset($_POST["age"])) < $age = $_POST["age"]; >echo "Имя: $name
Возраст: $age"; ?>
Для обработки запросов типа POST в PHP используется встроенная глобальная переменная $_POST . Она представляет ассоциативный массив данных, переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов name у полей ввода формы.
Например, так как атрибут name поля ввода возраста имеет значение age ( ), то в массиве $_POST значение этого поля будет представлять ключ «age»: $_POST[«age»]
И поскольку возможны ситуации, когда поле ввода будет не установлено, то в этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset() . И если переменная установлена, то функция isset() возвратит значение true .
Теперь мы можем обратиться к скрипту form.php и ввести в форму какие-нибудь данные:
И по нажатию кнопки введенные данные методом POST будут отправлены скрипту user.php :