Aula 09 PHP e
formulrios HTML
Prof. Pedro Baesse
pedro.baesse@ifrn.edu.br
Como criar um formulrio
Enviando as informaes para um programa PHP
Mtodo GET
Mtodo POST
Como tratar as informaes recebidas
Funes especiais para formatao de dados
Verificando os campos de um formulrio
Utilizado para aumentar a interatividade
fazendo comunicao entre o usurio e o site
Criados por meio do HTML
Composto de no mnimo um campo entrada
de dados e um boto para enviar as
informaes contidas nele
<form =>
<p>Digite seu e-mail: <input type="text" name="email" size="20"></p>
<p><input type="submit" value="Enviar!" name="enviar"></p>
</form>
As informaes vo ser perdidas, pois o navegador no sabe o que fazer com
elas
Para o tornar til podemos usar a opo action, informando ao navegador
para aonde enviar a informaes para serem processadas
<form action="recebe_dados.php">
<p>Digite seu e-mail: <input type="text" name="email" size="20"></p>
<p><input type="submit" value="Enviar!" name="enviar"></p>
</form>
Define um campo de entrada
Acompanhado de diversas opes
Opo Descrio
name Informa qual o nome do campo
value Informa um valor padro para o campo
size Informa o tamanho do campo exibido na tela
maxlenght Informa o nmero mximo de caracteres do campo
type Informa qual o tipo do campo de entrada de dados
Os possveis valores da opo type
Valor Descrio
Mostra uma caixa de texto de uma linha que permite a entrada de
text
valores numricos ou alfanumricos
Usado na digitao de senhas, pois camufla qualquer caractere
password
digitado com (*) mas a informao enviada normalmente
Campo escondido, no aparece na tela. Usado para passar
hidden
informaes aos programas que recebem os dados. Muito til
select Uma lista de seleo (ou drop-down)
checkbox Uma caixa de seleo, que pode ser marcada ou desmarcada
radio Botes de seleo, em que s uma opo escolhida entre vrias
Os possveis valores da opo type
Valor Descrio (Continuao)
textarea Caixa de texto com vrias linhas
file Permite o envio de arquivos
submit Boto que aciona o envio dos dados dos formulrios
Mesma funo submit, mas uma imagem substitue o boto
image
tradicional
Limpa todos os campos de um formulrio e retorna o valor-padro
reset
(se existir)
<form action="processa.php">
<p>
<strong>O que voc achou do site??</strong>
<dl><dd>
<input type="radio" name="avaliacao" value="muitobom" checked>Muito bom
<input type="radio" name="avaliacao" value="bom">Bom
<input type="radio" name="avaliacao" value="regular">Regular
<input type="radio" name="avaliacao" value="umlixo">Um Lixo
</dd></dl>
</p>
<p>
<strong>Qual a seo que voc mais gostou??</strong>
<dl><dd>
<select name="secao" size"1">
<option value="emcartaz">Em cartaz</option>
<option value="trilhasonora">Trilha Sonora</option>
<option value="fotos">Galeria de Fotos</option>
<option value="bilheteria">Bilheteria</option>
<option value="outra">Outra</option>
</select>
Outra: <input type="text" size="26" maxlength="256" name="outra">
</dd></dl>
</p>
<p>
<strong>Digite seus comentrios no campo abaixo:</strong>
<dl><dd>
<textarea name="comentarios" rows="5" cols="42"></textarea>
</dd></dl>
</p>
<p>
<strong>Diga-nos como entrar em contato com voc:</strong>
<dl><dd>
<pre>
Nome <input type="text" size="35" maxlength="256" name="nome">
E-mail <input type="text" size="35" maxlength="256" name="email">
Fone <input type="text" size="35" maxlength="256" name="fone">
</pre>
</dd></dl>
<dl><dd>
<input type="checkbox" name="novidades" value="nov">Quero receber as novidades do site por e-mail
</dd></dl>
</p>
<p>
<input type="submit" value="Enviar Dados">
<input type="reset" value="Limpar Formulrio">
</p>
</form>
Utilizamos a opo da action da tag form do
HTML
<form action="processa.php">
Existem dois mtodos de passagem de
parmetros
GET
POST
<form action="processa.php" method="POST">
Mtodo padro de envio de dados
Se no for especificado o mtodo na tag action, GET
assumido pelo PHP
Os dados so enviados juntamente com o
nome da pgina (URL) para o envio de dados
<form action="recebe_dados.php">
<p>Digite seu nome: <input type="text" name="nome" size="30"></p>
<p>Digite seu e-mail: <input type="text" name="idade" size="3"></p>
<p><input type="submit" value="Enviar!" name="enviar"></p>
</form>
http://www.seusite.com.br/recebe_dados.php?nome=Joaquim&idade=20
? - representa o incio da cadeia de variveis
& - identifica o incio de uma nova varivel
= - separa as variveis dos seus respectivos valores
Desvantagens
Limite de caracteres de 2.000
Os dados enviados so visveis na barra de
endereo do navegador
O mtodo POST resolve isso
Vantagem
Pode ser utilizado para passagem de parmetros
por link
Vantagem
Um loja virtual com um link para cada produto em
que o identificador passado como parmetro
Podem ser passados mais de uma parmetro, como
uma subcategoria
http://www.sualojinha.com.br/produto.php?id_produto=23&
sub_categoria=8
Recebidas os parmetros, um programa
processa os dados carregando as
informaes do banco de dados
Basta usar o mtodo POST em tag form
<form action="recebe_dados.php" method="POST">
<p>Digite seu nome: <input type="text" name="nome" size="30"></p>
<p>Digite seu e-mail: <input type="text" name="idade" size="3"></p>
<p><input type="submit" value="Enviar!" name="enviar"></p>
</form>
Diferente do GET, o POST envia os dados por
meio do corpo da mensagem encaminhada ao
servidor
Vantagens
No visvel a cadeia de variveis
http://www.seusite.com.br/recebe_dados.php
No limites no tamanho dos dados, sendo mais usado para
formulrios com grande quantidade de informaes
Enviar outros tipos de dados, no aceitos pelo GET, como
imagens ou outros arquivos (usar valor file na opo type
da tag input)
Desvantagens
No possvel a passagem de parmetros
Existem duas maneiras de acessar os dados recebidos
Tratar como variveis adicionando $ ao nome dos campo
especificados no formulrio. O campo nome ficaria $nome
e o campo idade $idade.
necessrio que a opo register_globals seja ativada
Usar os arrays superglobais predefinidos pelo php: $_GET e
$_POST
Os nome dos campos so usado como chaves associativas
$_GET[nome] ou $_POST[idade]
Por questes de segurana os desenvolvedores do PHP
recomendam o uso do arrays $_GET e $_POST. Caso queira
usar a primeira opo, cuide para no criar outras variveis
com o mesmo nome, pois o valores sero sobrescritos
Para evitar exibio de formatao indesejadas nas
pginas com informaes criadas pelo usurios,
como uma imagem porn, com o uso de comandos
HTML usa-se htmlspecialchars(<string>)
Substitui tags HTML como & por seus caracteres especiais
$amp, "...
$texto = "<img src=http://www.siteporno.com.br/foto1.jpg>";
$novo_texto = htmlspecialchars($texto);
echo $texto. "<br>";
echo $novo_texto;
Outro cuidado, ao receber dados com
caractere especial
Joo Alves, vulgo Joo do Cdigo
O PHP interpreta como Joo Alves, vulgo \Joo do
Cdigo\
A funo stripslashes(<string>) substitui \
por , \ por e (\\) por (\)
Outras duas funes importante ao usar o
mtodo GET so urldecode e urlencode
Usando GET Joaquim Legal fica
http://www.seusite.com.br/recebe_dados.php?nome=Joaquim%20Legal
Para ler corretamente
$nome = urldecode($nome);
A funo urldecode retira os cdigos
hexadecimais e urlencode recoloca
Urlencode til para redirecionar as
informaes para outro local por meio do
mtodo GET
<form action="recebe_dados.php" method="POST">
<div align="center"><center>
<p>Usurio: <input type="text" name="usuario" size="20">
Senha: <input type="text" name="senha" size="20"></p>
<p>Nome:<input type="text" name="nome" size="20"></p>
<p>E-mail:<input type="text" name="email" size="20"></p>
<p>Cidade:<input type="text" name="cidade" size="20">
Estado<input type="text" name=estado" size="2" maxlength="2"></p>
<p><input type="submit" value="Enviar!" name="enviar"></p>
</center></div>
</form>
Recebe_dados.php - Recebe e processa os dados da pgina
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];
$nome = $_POST["nome"];
$email = $_POST["email"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$erro = FALSE;
if(strlen($usuario)<5)
{echo "O usurio deve possuir ao menos 5 caracteres. <br>"; $erro=TRUE;}
if(strlen($senha)<5)
{echo "A senha deve possuir ao menos 5 caracteres. <br>"; $erro=TRUE;}
if(empty($nome) OR strstr($nome,' '))
{echo "Digite o nome corretamente. <br>"; $erro=TRUE;}
if(strlen($email)<8 OR !strstr($email,'@'))
{echo "Digite o e-mail corretamente. <br>"; $erro=TRUE;}
if(empty($cidade))
{echo "Digite a cidade corretamente. <br>"; $erro=TRUE;}
if(strlen($estado)!=2)
{echo "Digite o estado corretamente. <br>"; $erro=TRUE;}
if(!$erro)
{echo "Todos os dados foram digitados corretamente! <br>";}
Funo Descrio
empty Verifica se a string est vazia
strlen Retorna o nmero de caracteres de uma string
Acha a primeira ocorrncia de um caractere em
strstr
uma string
PHP Manual:
http://www.php.net/manual/pt_BR/index.php
Desenvolvendo Websites com PHP
De Juliano Niederauer