Processamento de formulário em um único arquivo PHP

Na lição anterior, nosso formulário estava localizado em uma página, mas era enviado para outra. Na verdade, isso não é necessário. Se você deixar o atributo action vazio ou removê-lo completamente, o formulário será enviado para a mesma página.

Como isso vai funcionar: na primeira vez que acessarmos a página, preencheremos o formulário com dados e clicaremos no botão. Depois disso, a página será atualizada e seu código será executado novamente, mas agora com os dados do formulário.

Vamos ver um exemplo. Suponha que temos um arquivo com um formulário e seu processamento:

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

<?php
  var_dump($_GET);
?>

Na primeira vez que acessar a página, a função var_dump exibirá um array vazio. E após o envio do formulário, ela exibirá os dados do formulário. Ou seja, na primeira vez $_GET estará vazio, e na segunda vez - conterá os dados do formulário.

Isso pode levar a problemas. Suponha, por exemplo, que vamos inserir números no formulário e queremos exibir a soma desses números na tela:

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

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

Neste caso, na primeira vez que acessar a página, veremos erros PHP, relacionados ao fato de que o array $_GET está vazio, e estamos tentando acessar seus elementos.

Vale mencionar que os erros podem não aparecer no seu navegador. Nesse caso, verifique se a exibição de erros do PHP está ativada, e também certifique-se de que é o primeiro acesso à página e que não há dados de formulário na barra de endereços.

Vamos corrigir o problema. Para isso, adicionaremos uma condição na qual verificaremos se o formulário foi enviado.

Por exemplo, podemos verificar se $_GET não está vazio. Se $_GET não estiver vazio - então o formulário foi enviado e podemos executar a soma. Caso contrário, ainda estamos no primeiro acesso à página e a soma não será executada. Então, aqui está o código corrigido:

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

Pergunte ao usuário o sobrenome, nome e patronímico. Após o envio do formulário, exiba na tela os dados inseridos.