Como proteger as TAGs de formulários criados em PHP

De Wiki Locaweb
Ir para: navegação, pesquisa

Para implementar um formulário em seu site que não permita o uso indevido, ou seja, evitar que campos sejam acrescidos além daqueles previstos em sua programação, sugerimos que siga o exemplo a seguir.

Conteúdo do arquivo formulario.html

<html> 
<head><title>Formulário para envio de e-mail</title> 
</head> 
<body> 
   <form method="POST" action="envia.php"> 
      <h1>Formulário para envio usando a função mail</h1> 
      <!--Caso queira permitir o preenchimento do email de destino descomente a linha abaixo--> 
      <!--Para:<br><input type="text" name="email_para"><br><br>--> 
      De:<br><input type="text" name="email_de"><br><br> 
      Assunto:<br><input type="text" name="assunto"><br><br> 
      Mensagem : 
      <textarea name="mensagem" rows="10" cols="60" lines="20"></textarea><br><br> 
      <input type="submit" name="send" value="Send"> 
   </form> 
</body> 
</html>


Conteúdo do arquivo envia.php

<?php 
//PROTEÇÃO ANTES DE ENVIAR 
//Verifica se os campos mensagem, email_de e assunto do formulário estão preenchidos 
if (empty($_POST['mensagem'])|| empty($_POST['email_de']) || empty($_POST['assunto'])) { 
   //Não tem mensagem vindo pelo formulário, não manda nada e redireciona para o formulario.html 
   header("Location: formulario.html"); 
} else { 
   //Verificação antes do envio; 
   //ESTA FUNÇÃO SERVE PARA VERIFICAR A CONSISTÊNCIA DE UM ENDEREÇO DE EMAIL 
   $emailPattern = '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; 
   if (!preg_match($emailPattern, $_POST['email_de'])) { 
      echo 'Por favor verifique o endereço de email.'; 
   } else { 
      //Aqui você pode definir para quem vai o email 
      $to="webmaster@dominio.com.br"; 
      //$to = $_POST['email_para']; 
      $from=$_POST['email_de']; 
      // Envia o email : 
      if (mail($to,$_POST['assunto'],$_POST['mensagem'],"From: $from\n")) { 
         // Mostra confirmação de email enviado com sucesso. 
         echo "Seu email foi enviado com sucesso."; 
         //Destroi as variáveis 
         unset ($_POST['email_de']); 
         unset ($_POST['assunto']); 
         unset ($_POST['mensagem']); 
      } else { 
         // Envio falhou 
         echo "Erro! Seu email não foi enviado."; 
      } 
   } 
} 
?>


Right-arrow-32.png O formulário do envia.php só aceita o envio de mensagens através de outro formulário (formulario.html), utilizando a variável global $_POST[variavel].

É verificado se os dados estão vindo de um formulário e se o endereço de e-mail é válido.

Atenção: O código de programação mencionado nesse artigo é uma sugestão. Contamos com sua compreensão para o fato de que a Locaweb não pode se responsabilizar por apresentar mais detalhes a respeito de sua implementação e utilização. Para mais informações, sugerimos que entre em contato com o seu desenvolvedor, pois tal conhecimento é aberto e de domínio de profissionais técnicos.


Veja também

Como conectar a um banco MySQL através de script PHP
Como enviar e-mails com a função mail() do PHP
Função para Upload de Arquivos: move uploaded file()
Usando as diretivas allow_url_fopen e allow_url_include