PHP 5 Обработка форм
Курс по основам языка программирования PHP.
W3Schools на русском языке. Уроки для начинающих
Суперглобальные PHP переменные $_GET и $_POST используются для сбора данных формы.
PHP - Простая HTML форма
В приведенном ниже примере показана простая HTML форма с двумя полями ввода и кнопкой отправки:
Пример
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Выполнить пример »
Когда пользователь заполняет форму выше и нажимает кнопку отправки, данные формы отправляются для обработки в файл PHP с именем "welcome.php". Данные формы отправляются HTTP методом POST.
Для отображения представленных данных вы можете просто отобразить все переменные. "Welcome.php" выглядит следующим образом:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
Будет выведено что-то вроде этого:
Welcome John
Your email address is john.doe@example.com
Тот же результат может быть достигнут также с использованием HTTP метода GET:
Пример
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Выполнить пример »
и "welcome_get.php" выглядит так:
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
Код выше довольно прост. Однако самое главное отсутствует. Вам необходимо проверить данные формы, чтобы защитить ваш скрипт от вредоносного кода.
Подумайте о БЕЗОПАСНОСТИ при обработке форм PHP!
Эта страница не содержит проверки формы, она просто показывает, как вы можете отправлять и извлекать данные формы.
Однако на следующих страницах будет показано, как обрабатывать PHP формы с учетом требований безопасности! Правильная проверка данных формы важна для защиты вашей формы от хакеров и спамеров!
GET и POST
GET и POST создают массив (например, массив (key1 => value1, 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 поддерживает расширенные функциональные возможности, такие как поддержка двоичного ввода из нескольких частей при загрузке файлов на сервер.
Однако поскольку переменные не отображаются в URL-адресе, невозможно добавить страницу в закладки.
Разработчики предпочитают POST для отправки данных формы.
Теперь давайте посмотрим, как мы можем обрабатывать PHP-формы безопасным способом!
Не выкладывайте свой код непосредственно в комментариях, он отображается некорректно. Воспользуйтесь такими сервисами, как jsfiddle.net, codepen.io, liveweave.com, jsbin.com, сохраните код на любом из этих сервисов и в комментариях дайте на него ссылку. Так будет виден и код, и результат.