Обработка на форма в един файл PHP

В предишния урок нашата форма беше разположена на една страница, а се изпращаше на друга. Всъщност това не е задължително. Ако оставим атрибутът action празен или го премахнем напълно, то формата ще се изпраща на същата тази страница.

Как ще работи това: при първото посещение на страницата ще попълним формата с данни и ще натиснем бутона. След това страницата ще се обнови и нейният код ще се изпълни отново, но вече с данните от формата.

Нека разгледаме пример. Да предположим, че имаме в един файл форма и нейната обработка:

form.php<form action="" method="GET">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

<?php
  var_dump($_GET);
?>

При първо посещение на страницата функцията var_dump ще изведе празен масив. А след изпращане на формата тя ще изведе вече данните от формата. Тоест първият път $_GET ще бъде празен, а вторият път - ще съдържа данните от формата.

Това може да доведе до проблеми. Да предположим, че например, в полетата на формата ще въвеждаме числа и искаме да изведем сумата на тези числа на екрана:

html<form action="" method="GET">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

<?php
  echo $_GET['test1'] + $_GET['test2'];
?>

В този случай при първото посещение на страницата ще видим грешки от PHP, свързани с факта, че масивът $_GET е празен, а ние се опитваме да достъпим неговите елементи.

Тук трябва да се каже, че при вас грешки може и да не се появят в браузъра. В този случай проверете, че сте включили извеждането на грешки на PHP, както и се уверете, че това е първото ви посещение на страницата и в адресния бар няма данни от форма.

Нека поправим проблема. За целта ще добавим условие, в което ще проверяваме дали формата е била изпратена.

Например, може да се провери $_GET за непразнота. Ако $_GET не е празен - то формата е била изпратена и може да се извърши сумиране. В противен случай това е още първото посещение на страницата и сумирането няма да бъде извършено. Ето, коригираният код:

html<form action="" method="GET">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

<?php
  if (!empty($_GET)) {
    echo $_GET['test1'] + $_GET['test2'];
  }
?>
Задание 1

Попитайте потребителя за фамилия, име и презиме. След изпращане на формата изведете на екрана въведените данни.