После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-04
Основы PHP → Обработка отправки HTML-формы
PHP, Отправка формы, Отправка данных введенных пользователем

В предыдущем примере мы отправляли запросы методом GET. Теперь познакомимся ближе с методом POST и формами HTML. Для этого напишем очень полезный сценарий — сумматор. Он будет складывать числа.

Скрипт сумматора

<?php
// Функция отображения формы ввода.
function show_form()
{
   echo '<html>';
   echo '<head>';
   echo '<title>Сумматор</title>';
   echo '</head>';
   echo '<body>';
   echo '<form action="/" method="post">';
   echo '<input type="text" name="a" />';
   echo '+';
   echo '<input type="text" name="b" />';
   echo '<input type="submit" value="=" />';
   echo '</form>';
   echo '</body>';
   echo '</html>';
}

// Функция вывода результата.
function show_result($a, $b)
{
$result = $a + $b;

   echo '<html>';
   echo '<head>';
   echo '<title>Сумматор</title>';
   echo '</head>';
   echo '<body>';
   echo '<p>';
   echo "$a + $b = <b>$result</b>";
   echo '</p>';
   echo '<p>';
   echo '<a href="sum.php">Хочу суммировать еще</a>';
   echo '</p>';
   echo '</body>';
   echo '</html>';
}

// Точка входа.
// Показываем результат операции или форму ввода.
if (isset($_POST['a']) && isset($_POST['b'])) {
   show_result($_POST['a'], $_POST['b']);
}
else
{
   show_form();
}
?>

Принцип работы сценария похож на новостную ленту.
Тут так же два режима:

  1. Режим ввода параметров операции сложения (слева)
  2. Режим показа результата (справа)

Форму ввода генерирует функция show_form(), HTML-код которой приведен ниже:

<form action="sum.php" method="post">
   <input type="text" name="a" />
   +
   <input type="text" name="b" />
   <input type="submit" value="=" />
</form>

Тег <input> бывает различных типов (что определяется атрибутом type). Нам нужны два текстовых поля (type="text") и одна кнопка (type="submit"). Текстовым полям мы дали имена ("a" и "b"), чтобы из сценария получить введенные туда пользователем значения.

Тег <input> должен обязательно находиться внутри тега <form> . У тега мы указали адрес сценария обработки отправки формы и метод передачи данных. Вместо "post" тут можно было бы указать "get" , тогда параметры и значения передались бы через URL (как правило, используют все же "post" ).

Параметры, переданные методом POST, содержатся в системной переменной $_POST. Это так же, как и $_GET, ассоциативный массив (словарь). Наш сценарий проверяет, были ли переданы методом POST аргументы операции сложения. Если да, пользователю возвращается результат, иначе — форма ввода.

В заключение

В этом уроке мы, наконец, перешли от скучной теории к долгожданной практике! Теперь вы можете писать сценарии, обрабатывающие настоящие HTTP-запросы.

Теперь вы понимаете разницу между GET и POST, знаете, что такое URL и как передать через него параметры запросу. И самое главное — вы знаете, как обработать эти параметры и отправку формы.

665
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока