@profissaoweb no Twitter

Ir direto para o conteúdo

Profissão Web

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: Thiago Melo

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!

Categorias:

Compartilhe:

Comentários

  1. Gerson às 03/05/2010 às 10:16:51

    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

  2. Gerson às 03/05/2010 às 10:12:36

    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á.

  3. Bruno S. às 03/03/2008 às 16:07:19

    Valeu, obrigado :)

  4. Thiago Melo às 03/03/2008 às 15:39:14

    Olá Bruno. Atualizado já! Abraços!

  5. Bruno S. às 03/03/2008 às 15:37:17

    E vai colocar a solução para o erro acima? Cumps

  6. Thiago Melo às 03/03/2008 às 14:34:28

    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.

  7. Bruno S. às 03/03/2008 às 14:26:30

    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 :)

  8. Wagner Paula às 05/02/2008 às 09:01:13

    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!

  9. camilo vitorino às 02/02/2008 às 15:12:32

    Escrevi errado. Selo post não. Belo... Belo.

  10. camilo vitorino às 02/02/2008 às 15:10:06

    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.

  11. João às 28/01/2008 às 21:07:17

    Teste es está ok. porem o email que configurei não recebe nenhuma msg. algm pode me ajudar ?

  12. Thiago Melo às 21/01/2008 às 12:17:59

    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!!!

  13. Diogo às 21/01/2008 às 12:00:39

    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.

  14. Junio Vitorino às 21/01/2008 às 08:58:45

    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!!

Publique no seu blog

Clique aqui para publicar este artigo no seu blog.

Profissão Web nas redes sociais

  • Twitter
  • Flickr
  • YouTube
  • Facebook
  • E-mail

Galeria de fotos

Fotos oficiais do sétimo dia da Campus Party 2011 em São Paulo

Ver galeria de fotos

Especiais do Profissão Web

Ver galeria de especiais

Publicidade

Enquete do blog

O que você achou da nova versão do Profissão Web?

Ver resultados

Assine nossa newsletter

Cadastre o seu e-mail no campo abaixo para receber diariamente os artigos do Profissão Web:


Um e-mail de confirmação do FeedBurner será enviado para você! Confirme no link que será enviado para o seu e-mail para receber os últimos artigos do Profissão Web.