Одна из ключевых функций PHP – обработка форм. Формы записываются на обычном HTML, а их обработка осуществляется с помощью PHP. В этом уроке мы изучим создание и обработку различных форм с помощью PHP. В качестве примера возьмём стандартную форму отправки комментариев.
Создание HTML-формы
Создадим HTML-форму. Базовый код:
<!DOCTYPE html>
<html>
<head>
<title>Обработка форм</title>
</head>
<body>
<form action="check.php" method="post">
<input type="text" name="name" placeholder="Имя">
<br>
<input type="text" name="email" placeholder="Email">
<br>
<textarea name="message" rows="5" cols="50" placeholder="Сообщение"></textarea>
<br>
<input type="submit" name="done" value="Готово">
</form>
</body>
</html>
В этом коде:
- action="check.php" указывает на страницу check.php, где будет обрабатываться форма. Пустая строка означает обработку на той же странице.
- method="post" указывает на метод передачи данных (подробнее ниже).
Мы добавили поля для имени, email и сообщения. Атрибут name каждого поля используется для обращения к нему в PHP-коде. Кнопка отправки имеет тип submit.
PHP-скрипт для обработки формы (check.php)
Создадим файл check.php в той же директории, что и HTML-файл формы. Для получения данных, отправленных пользователем, используются глобальные переменные:
- $_REQUEST: получает все данные, независимо от метода (GET или POST).
- $_GET: получает данные, отправленные методом GET.
- $_POST: получает данные, отправленные методом POST.
$_REQUEST объединяет данные из $_GET и $_POST, поэтому $_REQUEST рассматриваться отдельно не будет.
Для вывода массива данных удобно использовать функцию print_r(). Эта функция предназначена для разработчиков и не используется в публичном коде сайта, так как выводит массив в необработанном виде.
Пример использования print_r() для вывода массива $_POST:
<?php
print_r($_POST);
?>
Если заполнить форму и отправить данные методом POST, print_r($_POST) выведет ассоциативный массив, где ключи – это значения атрибута name полей формы, а значения – данные, введенные пользователем.
Методы GET и POST
Ключевое отличие между GET и POST: GET передает данные в адресной строке, POST – нет. Это значит, что данные, отправленные методом GET, видны пользователю, что нежелательно с точки зрения безопасности. Поэтому, для отправки конфиденциальных данных, всегда следует использовать метод POST. Однако, GET может быть полезен в определенных ситуациях.
Пример использования GET: измените method="post" на method="get" в HTML-коде формы. Данные будут передаваться в адресной строке браузера.
<?php
print_r($_GET);
?>
Обработка данных формы
Обработка данных формы включает проверку на наличие данных, валидацию и т.д. Пример проверки на пустое поле имени:
<?php
if (empty($_POST['name'])) {
echo "Введите имя! <a href='index.html'>Назад</a>"; // index.html - имя вашего HTML файла
}
?>
Если поле имени пустое, выводится сообщение с ссылкой на главную страницу.
При успешной проверке, можно перенаправить пользователя на другую страницу с помощью функции header():
<?php
header('Location: index.html'); // Перенаправление на index.html
exit;
?>
Обработка формы на той же странице
Для обработки формы на той же странице, необходимо добавить условный оператор if, проверяющий, была ли нажата кнопка отправки:
<?php
if (isset($_POST['done'])) {
// Обработка данных формы
}
?>
Это предотвратит выполнение кода обработки при первой загрузке страницы. isset($_POST[‘done’]) проверяет, существует ли переменная done в массиве $_POST.
В этом уроке рассмотрены основы обработки форм в PHP, включая создание HTML-формы, использование методов GET и POST, и обработку данных формы с проверками и перенаправлением. В дальнейшем мы рассмотрим более сложные примеры обработки форм, включая работу с базами данных.