Обработка форм PHP

Суперглобальные переменные PHP $_GET и $_POST используются для сбора данных формы (form-data).

PHP - простая HTML-форма

Пример ниже показывает простую HTML-форму, которая содержит два поля ввода и кнопку отправки:

Пример

<html>
<body>
<form action="welcome.php" method="post">
Имя: <input type="text" name="name"><br>
Электронная почта: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

Запуск примера

Когда пользователь заполняет эту форму и нажимает кнопку "Отправить", данные формы отправляются в PHP-файл с именем "welcome.php" для обработки. Форменные данные отправляются методом HTTP POST.

Чтобы отобразить отправленные данные, можно просто вывести (echo) все переменные. Файл "welcome.php" выглядит так:

<html>
<body>
Добро пожаловать <?php echo $_POST["name"]; ?><br>
Ваш адрес электронной почты: <?php echo $_POST["email"]; ?>
</body>
</html>

Вывод:

Добро пожаловать Bill
Ваш адрес электронной почты: Bill.Gates@example.com

С помощью метода HTTP GET можно получить аналогичный результат:

Пример

<html>
<body>
<form action="welcome_get.php" method="get">
Имя: <input type="text" name="name"><br>
Электронная почта: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>

Запуск примера

"welcome_get.php" выглядит так:

<html>
<body>
Добро пожаловать <?php echo $_GET["name"]; ?><br>
Ваш адрес электронной почты: <?php echo $_GET["email"]; ?>
</body>
</html>

Код очень прост. Однако, наиболее важный момент был упущен. Вам нужно проверять данные формы, чтобы防止 уязвимости скрипта.

Примечание:Обратите внимание на безопасность при обработке PHP-форм!

На этой странице не включен никакой код проверки форм, он только демонстрирует, как отправлять и принимать данные форм.

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

GET vs. POST

GET и POST создают массивы (например, array( key => value, key2 => value2, key3 => value3, ...)). Этот массив содержит пары ключ/значение, где ключ - имя элемента формы, а значение - данные ввода пользователя.

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

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

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

Когда использовать GET?

Информация, отправленная с формы через метод GETВидно для всех(Все имена переменных и значения будут отображаться в URL). GET имеет ограничения на количество передаваемой информации. Ограничение составляет около 2000 символов. Однако, так как переменные отображаются в URL, добавление страницы в закладки также становится более удобным.

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

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

Когда использовать POST?

Информация, отправленная с формы через метод POSTНевидимо для других(Все имена/значения будут включены в тело HTTP-запроса), и также есть ограничения на количество передаваемой информацииНеограниченно.

Кроме того, POST поддерживает более сложные функции, такие как multi-part binary input при загрузке файлов на сервер.

Однако, так как переменные не отображаются в URL, страницу также нельзя добавить в закладки.

Совет:Разработчики предпочитают использовать POST для отправки данных форм.

Давайте теперь посмотрим, как безопасно обрабатывать формы PHP!