Domingo, 20 de janeiro de 2008 às 20:28 (Última atualização: 31/07/2008 às 14:07:22)
Formulário em PHP
Publicado por:
Desenvolver um formulário em PHP não é uma das coisas mais complicadas, mas para um designer de interfaces como eu isso pode se tornar uma tarefa muito complicada. Pensando nisso, ensinarei hoje como desenvolver um formulário de contato em PHP com uma validação simples dos campos.
Formulário
Nossa primeira etapa será desenvolver o formulário de preenchimento:
<form name="contato" action="form.php" method="post" onsubmit="return validaForm()"> <fieldset> <legend>Preencha os campos abaixo:</legend> <label for="nome">Nome:</label> <input name="nome" type="text" size="30" class="txtfield"/> <label for="email">E-mail:</label> <input name="email" type="text" size="30" class="txtfield"/> <label for="telefone">Telefone:</label> <input name="telefone" type="text" size="30" class="txtfield"/> <label for="cidade">Cidade:</label> <input name="cidade" type="text" size="30" class="txtfield"/> <label for="assunto">Assunto:</label> <input name="assunto" type="text" class="txtfield"/> <label for="mensagem">Mensagem:</label> <textarea name="mensagem" cols="5" rows="30"></textarea> <input name="Enviar" value="Enviar" type="submit" /> </fieldset> </form>
Validação do formulário
Com o formulário de preenchimento pronto, vamos validar os campos de preenchimento obrigatório. Neste exemplo, vamos tornar todos os campos obrigatórios.
É muito importante que o código javascript abaixo esteja inserido ou linkado na página do formulário de preenchimento. Do contrário, a validação não funcionará.
<script language="JavaScript">
function validaForm(){
//validar nome
d = document.contato;
if (d.nome.value == ""){
alert("O campo " + d.nome.name + " deve ser preenchido!");
d.nome.focus();
return false;
}
//validar email
if (d.email.value == ""){
alert("O campo " + d.email.name + " deve ser preenchido!");
d.email.focus();
return false;
}
//validar email (verificao de endereco eletronico)
parte1 = d.email.value.indexOf("@");
parte2 = d.email.value.indexOf(".");
parte3 = d.email.value.length;
if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
alert("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
d.email.focus();
return false;
}
//validar telefone
if (d.telefone.value == ""){
alert("O campo " + d.telefone.name + " deve ser preenchido!");
d.telefone.focus();
return false;
}
//validar telefone(verificacao se contem apenas numeros)
if (isNaN(d.telefone.value)){
alert("O campo " + d.telefone.name + " deve conter apenas numeros!");
d.telefone.focus();
return false;
}
//validar cidade
if (d.cidade.value == ""){
alert("O campo " + d.cidade.name + " deve ser preenchido!");
d.cidade.focus();
return false;
}
//validar assunto
if (d.assunto.value == ""){
alert("O campo " + d.assunto.name + " deve ser preenchido!");
d.assunto.focus();
return false;
}
//validar mensagem
if (d.mensagem.value == ""){
alert("O campo " + d.mensagem.name + " deve ser preenchido!");
d.mensagem.focus();
return false;
}
}
</script>
Como você pode ver, utilizei três exemplos de validação. No primeiro exemplo validamos se os campos “nome”, “assunto” e “mensagem” estão vazios. No segundo validamos se o campo “e-mail” foi realmente preenchido com um endereço eletrônico e no terceiro exemplo validamos se o campo “telefone” possui apenas números.
O código PHP
Com a página do formulário pronta e a implementação da validação dos campos, vamos criar uma nova página em PHP com o nome “form.php”. Nesta página você deve colocar o seguinte código:
<?php
@extract($_POST);
$recipient = "contato@seuemail.com.br";
$subject = "Novo contato no site!";
$msg = "Nome: $nome"\"nE-mail: $email"\"nTelefone: $telefone"\"nCidade: $cidade"\"nAssunto: $assunto"\"nMensagem: $mensagem"\"n";
$mailheaders = "From: $email"\"n";
mail("$recipient", "$subject", "$msg", "$mailheaders");
header("Location: sucesso.htm");
?>
Importante: Para este código funcionar você terá que tirar as aspas da barra invertida “\” ficando “\n” (sem aspas). Tive que utilizar esta solução porque o WordPress não permite a inserção da barra.
Finalização
Para finalizar você deve criar uma página, que pode ser em HTML mesmo, com a mensagem de envio com sucesso. Está página deve ter o nome “sucesso.htm”.
Existem na internet diversos exemplos de formulário em PHP sendo que muitos deles com validação dos campos em AJAX, mas espero que este simples formulário em PHP possa ajudá-los nos momentos mais difíceis.
Se você tiver alguma dúvida, deixe o seu comentário!




















Mais uma questão: É possivel colocar mais de um e-mail para receber os dados do formulário? Se, sim, como incluir + e-mails? Abraço
Olá Tiago, bom dia! Parabéns! Muito bom! Gostaria de pedir uma ajuda. Como eu faço para quue o usuário que preenche o ofrmulário, receba um e-mail de confirmaão do emvio da mesnagem? Agradeço desde já.
Valeu, obrigado :)
Olá Bruno. Atualizado já! Abraços!
E vai colocar a solução para o erro acima? Cumps
Pessoal, Peço desculpas pelos erros no envio das mensagens. Como o Diogo mesmo disse, faltaram as quebras de linha na mensagem ($msg). Vou atualizar o post com alguma solução ainda hoje. Enquanto isso, é só colocar a barra ‘\’ ao lado (esquerdo) da letra ‘n’. O editor do wordpress não permite que eu coloque esta barra. Abraços para todos e desculpe pelo erro.
Estou com um erro nos emails... Ao inserir um email do género: bruno.antunes@exemplo.com Dá erro... alguma solução? Agradecia uma resposta do autor Thiago :)
Olá Tiago! parabéns. Sou newbie total em php e esse código foi o único que consegui implementar e ver funcionando! só tem um porém: ele valida certinho e envia o email mas os campos chegam na minha caixa postal vazios. Por que acontece isso? Abrçs e obrigado!
Escrevi errado. Selo post não. Belo... Belo.
Muito bom mesmo. Parabéns. @João, imagino que você esteja usando servidor local, estou certo? Se sim, não sei porque, mas servidor local (AppServ e afins) não não funciona envio de email. Selo post. Simples mas Vai ajudar muita gente com certeza.
Teste es está ok. porem o email que configurei não recebe nenhuma msg. algm pode me ajudar ?
Olá Diogo ... Realmente você está certo, o editor comeu a barra invertida. Estava procurando por uma solução para isso. Espero logo resolver o problema. Abraços!!!
Legal a dica, apenas um detalhe: Em form.php , as quebras de linha na mensagem ($msg) ficaram erradas, faltou as '\' nos '\n' . Provavelmente foi devido ao editor do post, que costumam cortar esse tipo de coisa.
Legal, boa dica ajudará bastante àqueles que tem dificuldade com prog server-side e validações (que necessáriamente não precisa ser javascript). Valeu!!