PHP для новичков: обработка форм POST и GET

Создание формы

На странице about.php создадим форму для получения данных:

<form action="check_post.php" method="post">
  <div class="mb-3">
    <input type="text" name="username" class="form-control" placeholder="Введите имя">
  </div>
  <div class="mb-3">
    <input type="email" name="email" class="form-control" placeholder="Введите email">
  </div>
  <div class="mb-3">
    <input type="password" name="password" class="form-control" placeholder="Введите пароль">
  </div>
  <div class="mb-3">
    <textarea name="message" class="form-control" placeholder="Введите сообщение"></textarea>
  </div>
  <input type="submit" value="Отправить" class="btn btn-success">
</form>

Атрибут action указывает страницу обработки данных (check_post.php), а method устанавливает метод передачи данных – POST. Форма содержит поля для имени пользователя, email, пароля и сообщения, а также кнопку «Отправить».

Обработка данных методом POST

Файл check_post.php:

<?php
  print_r($_POST);
?>

Функция print_r($_POST) выводит содержимое глобального массива $_POST, содержащего данные, переданные методом POST. Массив является ассоциативным: ключи – имена полей формы, значения – введенные данные.

Проверка и валидация данных

<?php
  $name = trim($_POST['username']);
  $email = trim($_POST['email']);
  $password = trim($_POST['password']);
  $message = trim($_POST['message']);

  if (strlen($name) <= 1) {
    echo "Такого имени не существует";
  } elseif (empty($email) || empty($password) || empty($message)) {
    echo "Введите все данные";
  } else {
    echo "<h1>Все данные</h1>";
    echo "<p>Имя: " . $name . "</p>";
    echo "<p>Email: " . $email . "</p>";
    // Хеширование пароля
    $password = md5($password);
    echo "<p>Пароль: " . $password . "</p>";
    echo "<p>Сообщение: " . $message . "</p>";
  }
?>

Код выполняет следующие действия: удаляет пробелы с помощью функции trim(); проверяет длину имени пользователя (меньше или равно 1 символу – выводится сообщение об ошибке); проверяет заполнены ли поля email, пароль и сообщение (если нет – выводится сообщение об ошибке); если ошибок нет, выводится информация о введенных данных, пароль хешируется с помощью функции md5().

Перебор массива с помощью цикла foreach

Для наглядности переберем массив $_POST с помощью цикла foreach:

<?php
  foreach($_POST as $key => $value){
    echo "<p>" . $key . ": " . $value . "</p>";
  }
?>

Переадресация пользователя

Для переадресации после успешной обработки данных используем функцию header() и оператор exit():

<?php
  // ... (код проверки данных) ...

  if ( /* условия успешной обработки */ ) {
    header('Location: about.php');
    exit();
  }
?>

Обработка данных методом GET

В форме изменим атрибут method на get и укажем другое действие, например, check_get.php. В файле check_get.php используем $_GET аналогично $_POST. Данные, переданные методом GET, отображаются в URL-адресе. Метод GET подходит для передачи небольшого количества данных, а POST – для больших объемов данных или конфиденциальной информации. GET полезен для создания динамических страниц, где параметры передаются через URL. Например, на главной странице index.php:

<?php
print_r($_GET);
?>

Параметры добавляются в URL так: index.php?param1=value1&param2=value2.

Рассмотрены обработка форм с использованием методов POST и GET, валидация данных и переадресация пользователя. POST используется для отправки данных форм, а GET – для передачи небольшого количества данных через URL. Выбор метода зависит от контекста задачи.

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