PHP для новичков: обработка форм (Урок 19)

Одна из ключевых функций 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, и обработку данных формы с проверками и перенаправлением. В дальнейшем мы рассмотрим более сложные примеры обработки форм, включая работу с базами данных.

Что будем искать? Например,программа