PHP Учебник

PHP Старт Введение в PHP Установка PHP Синтаксис PHP Комментарии в PHP Переменные PHP PHP Echo / Print Типы данных PHP Строки PHP Числа PHP Математика в PHP Константы PHP Операторы PHP PHP If...Else...Elseif PHP Switch Циклы в PHP Функции PHP Массивы PHP PHP Суперглобальные PHP RegEx

PHP Формы

Обработка форм PHP Валидация форм PHP Обязательные поля Валидация URL/E-mail Полная форма PHP

PHP Продвинутый

PHP Дата и время PHP Include/Require PHP Работа с файлами Открытие/Чтение файлов Создание/Запись файлов PHP Загрузка файлов Файлы cookie PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Функция Callback PHP JSON PHP Исключения

PHP OOP

Что такое ООП в PHP Классы/Объекты PHP Цепочки методов PHP Конструктор PHP Деструктор PHP Модификаторы доступа Наследование в PHP Константы класса PHP Подсказка типов PHP Подсказка интерфейсов Абстрактные классы PHP PHP Интерфейсы PHP Полиформизм PHP Трейты Статические методы PHP Статические свойства PHP Пространства имен PHP Итерируемые объекты

База данных MySQL

База данных MySQL Подключение к MySQL Создание БД MySQL Создание таблицы MySQL Вставка данных MySQL Получить ID MySQL Подготовленные операторы PHP MySQL Получение данных MySQL Предложение WHERE Предложение ORDER BY Обновление данных MySQL Удаление данных БД MySQL Limit Data

PHP XML

Парсеры PHP XML Парсер PHP SimpleXML Получить PHP SimpleXML PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База Данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры Практика ООП PHP PHP квиз-тест Упражнения Базовый PHP Упражнения Алгоритмы Упражнения Массивы Упражнения Цикл for Упражнения Функции Регулярные выражения Упражнения Дата PHP Упражнения Строки PHP Математика PHP Упражнения Формы PHP Упражнения Классы PHP Упражнения JSON PHP PHP Задачник


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




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


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

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

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

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

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

<html>
<body> <form action="action_form.php" method="POST">
Имя: <input type="text" name="firstname" value="">
Фамилия: <input type="text" name="lastname" value="">
<input type="submit" value="Отправить">
</form> </body> </html>

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

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

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

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

<html>
<body>

Вы ввели следующие данные:
Имя: <?php echo $_POST["firstname"]; ?>
Фамилия: <?php echo $_POST["lastname"]; ?>

</body>
</html>

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

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

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

<!DOCTYPE HTML>
<html>  
<body>

<form action="send.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

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

<html>
<body>

Привет <?php echo $_GET["name"]; ?><br>
Твой email: <?php echo $_GET["email"]; ?>

</body>
</html>

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

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

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

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

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

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

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

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

index.html?page=title&name=Nicol

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

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

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

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

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

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

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

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

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

Проверь себя с помощью упражнений

Задача:

Как в обработчике send.php вывести значение из поля "Ваше имя"?

<form action="send.php" method="get"> Ваше имя: <input type="text" name="firstname"> </form>
<html> <body> Привет, <?php echo ; ?> </body> </html>