Um formulário HTML é usado para coletar a informações de usuário. PHP pode manipular essas informações e também armazená-las em um banco de dados.
Dentro de um formulário podemos adicionar diversos tipos de botões e campos.
- <form></form> Usamos a tag <form> para criar um formulário. Dentro dessas tags inserimos diversos elementos, como botões e campos.
action
: a página que receberá dos dados quando enviados.- method: forma de envio do formulário. POST e GET são os métodos mais usados. Se não especificar o atributo method, o método get será usado por padrão. Esses nomes podem ser escritos em minúsculos ou maiúsculos: get ou GET, post ou PoSt.
<form action="form.php" method="post">
</form>
Os elementos mais comuns a serem usados em um formulário são:
- text
- label
- password
- checkbox
- radio button
- select
- file upload
Todos esses elementos possuem alguns atributos importantes, como: name
(nome), type
(tipo), e value
(valor).
Digite as linhas abaixo em index.php:
<html>
<body>
<form action="recebe.php" method="post">
<label for="email">Email:</label>
<input type="email" name="email"/>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Resultado:
Crie o Arquivo recebe.php
O arquivo recebe.php ainda não existe. Crie esse arquivo na pasta do seu servidor web. Vimos a localização da pasta na aula 003 dessa série de artigos:
- XAMPP: no windows, com o XAMPP instalado, a pasta é C:\xampp\htdocs\meusite
- No linux colocamos dentro de /var/www/html/meusite/
No meu caso criei o receb.php dentro de /var/www/html/meusite/
Abaixo iremos falar de métodos $_POST e $_GET, observe $_POST e $_GET são variáveis superglobais. Isso significa que você pode acessá-los em qualquer lugar no script.
Recebendo os Dados Usando o Método POST
No arquivo recebe.php recebemos os dados de index.php através do array associativo $_POST. Nesse caso, como o nome do campo em index.php é email(veja: name=”email“), para pegar o valor usamos: $_POST[‘email‘].
#1 Dentro de recebe.php digite:
<html>
<body>
<?php
echo $_POST['email'];
?>
</body>
</html>
#2 salve a edição, volte ao arquivo index.php e preencha o campo com um email qualquer e clique em enviar.
O resultado será o recebimento do email pela página recebe.php:
maria@email.com
Podemos melhorar o código em recebe.php para validar se o campo email não está vazio; para isso usamos a função isset().
<html>
<body>
<?php
if(!empty($_POST['email'])) {
echo $_POST['email'];
} else {
echo "Valor Inválido";
}
?>
</body>
</html>
Acima, colocamos a condição onde se o valor estiver diferente(!) de vazio ele mostrará o valor de $_POST[‘…’].
Recebendo os Dados Usando o Método GET
Ao contrário do método POST, o método GET anexa os dados do formulário na URL do formulário. Exemplo, usando as mesmas linhas acima, mas com GET, ao clicarmos em enviar o endereço(URL) da página ficaria assim:
http://localhost/meusite/recebe.php?email=maria%40email.com
Usamos o array associativo $_GET[‘ ‘] para receber um valor de formulário enviado usando o método GET.
Edite a página index.php assim:
Abaixo alterei apenas method=”get“
<html>
<body>
<form action="recebe.php" method="get">
<label for="email">Email:</label>
<input type="email" name="email"/>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Agora edite recebe.php, onde tiver $_POST mude para $_GET
<html>
<body>
<?php
if(!empty($_GET['email'])) {
echo $_GET['email'];
} else {
echo "Valor Inválido";
}
?>
</body>
</html>
Faça um teste e observe a URL do site:
http://localhost/meusite/recebe.php?email=maria%40email.com
Observe que o @ está codificado como %40 na URL.
Alternativa à Função empty()
Como alternativa ao uso de empty() podemos usar a tag html required=”required” dentro do próprio html em index.php:
<html>
<body>
<form action="recebe.php" method="get">
<label for="email">Email:</label>
<input type="email" name="email" required="required"/>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Assim, ao deixarmos vazio o campo iremos receber um aviso alertando sobre isso. Não precisaremos usar if(!empty($_GET[‘email’]))…
Muita gente também usa a função isset() para validar o conteúdo da variável.
Segurança: Escapando os Dados dos Campos de um Formulário
Procure sempre usar a função htmlspecialchars() para escapar/tirar o sentido do conteúdo dos campos. Por exemplo, alguém, maliciosamente, poderia enviar no campo email ou nome um código. Para evitar esse tipo de ataque, conhecido como cross-site scripting, podemos usar a função htmlspecialcharts().
<html>
<body>
<?php
if(!empty($_POST['nome']) ) {
$nome = htmlspecialchars($_POST['nome']);
echo "$nome recebido com sucesso!";
} else {
echo "Valor Inválido";
}
?>
</body>
</html>
Faça um teste, tente enviar o código abaixo sem usar htmlspecialchars:
<script>alert('Oii');</script>
Conclusão
Use o método GET quando o formulário apenas recebe dados do servidor mas não altera o servidor. Exemplo: um formulário de buscas.
Caso contrário, se for um form que insere dados em um banco ou outra alteração similar, use POST.
Uma outra função usada para validar o valor passado para $_GET ou $POST é isset().
Comments on “PHP – Aula 030: Trabalhando com Formulários HTML”