Validando formulário de E-mail com PHP

Por | @biel_pinheiro Programação

Boa noite a todos!

Em primeiro lugar, gostaria de desejar um Feliz 2008 a todos.
Estou voltando das férias agora, e já deixo um artigo muito útil para todos.

Desde que lançei meu artigo sobre a criação de um formulário de e-mail com resposta automática:

https://www.oficinadanet.com.br/artigo/640/formulario_de_email_em_php_com_resposta_automatica

Recebi centenas de e-mails de teste dos leitores do site. Mas uma coisa me chamou a atenção: 99% das pessoas deixaram algum campo sem preenchimento, ou não os preencheram corretamente. Então tive a idéia de criar uma validação simples, porém eficaz para este formulário.

Quando decidi fazer, pensei logo no Javascript, pois me daria velocidade. Mas essa linguagem não é segura para validações, uma vez que qualquer pessoa pode desativar o Javascript através das opções do navegador. Nesse caso, a melhor solução é validar o formulário pelo próprio PHP.

Segue abaixo o código com o acréscimo da validação. Logo após virá a explicação:

<?php 
/* Enviar E-mail com Resposta Automática

* Desenvolvido por: Gabriel Pinheiro

* Data: 04/12/2007

*/

// Recebendo os dados passados pela página "form_contato.php"

$recebenome = $_POST['nome"  target="_blank">;

$recebemail = $_POST['email"  target="_blank">;

$recebemsg  = $_POST['mensagem"  target="_blank">;

/* Validando os dados do formulário

 * Adicionado dia 14/01/2008

 * Por: Gabriel Pinheiro

*/

// Proibindo que os campos fiquem em branco

if (($recebenome == "") || ($recebemail == "") || ($recebemsg == ""))

  {

    echo "<script>alert('Nenhum campo pode ficar em branco.');</script>";

    echo "<script>history.go(-1);</script>";

  }

// Validando o campo com E-mail

if (substr_count($recebemail,"@") == 0 || substr_count($recebemail,".") == 0)

  {

   echo "<script>alert('Por favor, utilize um e-mail válido');</script>";

   echo "<script>history.go(-1);</script>";

   }

// Definindo os cabeçalhos do e-mail

$headers = "Content-type:text/html; charset=iso-8859-1";

// Vamos definir agora o destinatário do email, ou seja, VOCÊ ou SEU CLIENTE

$para = "gabrielmpinheiro@gmail.com";

// Definindo o aspecto da mensagem

$mensagem   = "<h2>De:</h2> ";

$mensagem  .= $recebenome . $recebemail;

$mensagem  .= "<h2>Assunto:</h2>";

$mensagem  .= "Mensagem do Site";

$mensagem  .= "<h2>Mensagem</h2>";

$mensagem  .= "<p>";

$mensagem  .= $recebemsg;

$mensagem  .= "</p>";

// Enviando a mensagem para o destinatário

$envia =Â Â mail($para,"E-mail do Site",$mensagem,$headers);

  

// Envia um e-mail para o remetente, agradecendo a visita no site, e dizendo que em breve o e-mail será respondido.

$mensagem2Â Â = "<p>Olá <strong>" . $recebenome . "</strong>. Agradeçemos sua visita e a oportunidade de recebermos o seu contato. Em até 48 horas você receberá no e-mail fornecido a resposta para sua questão.</p>";

$mensagem2 .= "<p>Observação - Não é necessário responder esta mensagem.</p>";

$envia =Â Â mail($recebemail,"Sua mensagem foi recebida!",$mensagem2,$headers);

// Exibe na tela a mensagem de sucesso, e depois redireciona devolta para a página de contato.

  

echo "Mensagens Recebidas com Sucesso!";

echo "<meta http-equiv='refresh' content='2;URL=form_contato.php'>";

?>

O trecho da linha 23 até a linha 27 faz uma verificação nas variáveis, e utilizo o operador OR "||" para que qualquer dos campos que não tiver conteúdo faça a mensagem de erro aparecer.

Já o trecho das linhas 32 a 36 varrem a variável que tem o e-mail à procura do símbolo arroba "@" e do símbolo ".", que são obrigatórios em 100% dos e-mails. Se não os encontrar, ele retornará um erro também.

Vale lembrar de que este método não é 100% eficaz, uma vez que existem milhares de técnicas avançadas para a validação de formulários. Porém, com esse pequeno código, você terá uma redução drástica no número de e-mails recebidos sem remetente, por exemplo.

Se quiserem ver o formulário funcionando, acessem o endereço:
http://www.gabrielpinheiro.com/tutoriais/email/form_contato.php

Forte abraço e até a próxima

Mais sobre: PHP, e-mail, javascript
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários