No artigo anterior criamos duas páginas: index.php e recebe.php; recebe.php recebia dos dados do formulário enviado da página index.php. Uma página envia dados e a outra recebe.
Podemos também usar somente uma página para enviar para si mesma os dados. Isso é chamado de Formulário de autoprocessamento(self-processing form).
Aqui faremos uma página que envia e ela mesma recebe os dados.
Poderíamos fazer isso colocando o nome da própria página em action=” “
Abaixo editamos a página index.php com action=”index.php”. As linhas em php recebe os valores repassados.
<html>
<body>
<form action="index.php" method="post">
<label for="nome">Nome:</label>
<input type="text" name="nome" required="required" />
<br>
<label for="email">Email:</label>
<input type="email" name="email" required="required" />
<button type="submit">Enviar</button>
</form>
<?php
echo $_POST['nome'];
echo "<br>";
echo $_POST['email'];
?>
</body>
</html>
Resultado:
Exemplo de Formulário Usando $_SERVER[‘PHP_SELF’]
Para criar um formulário de autoprocessamento, você pode usar o $_SERVER[‘REQUEST_METHOD’] que retorna o método de solicitação, por exemplo, GET ou POST.
Podemos obter o mesmo resultado acima usando $_SERVER[‘PHP_SELF’]. Esse array retorna o caminho da página, nesse caso index.php:
<?php
echo $_SERVER['PHP_SELF'];
?>
Resultado:
/meusite/index.php
Então usar uma das duas formas abaixo dá na mesma:
<html>
<form action="index.php" method="post">
.....
ou
<html>
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
.....
Usando $_SERVER[‘REQUEST_METHOD’]
Sabemos que $_SERVER[‘PHP_SELF’] retorna o caminho(path) da página. Também temos $_SERVER[‘REQUEST_METHOD’] que retorna o metódo, ou seja, se o formulário que enviou os dados trabalha com get ou post.
<html>
<body>
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="get">
<label for="nome">Nome:</label>
<input type="text" name="nome" required="required" />
<br>
<label for="email">Email:</label>
<input type="email" name="email" required="required" />
<button type="submit">Enviar</button>
</form>
<?php
echo "O caminho é " . $_SERVER['PHP_SELF'];
echo "<br>";
echo "o método usado foi " . $_SERVER['REQUEST_METHOD'];
?>
</body>
</html>
resultado:
O caminho é /meusite/index.php
o método usado foi GET
Uma boa recomendação é escapar o $_SERVER[‘PHP_SELF’]) com htmlspecialchars( ), como fizemos acima: htmlspecialchars($_SERVER[‘PHP_SELF’])
Conclusão
Aqui, vimos enviar dados de formulário de uma página para ela mesma.
Também usamos $_SERVER[‘REQUEST_METHOD’] para sabermos qual o método usado no formulário.