Formail - Juntando dados de vários campos e enviando tudo por e-mail

Iniciado por Triplo X, 11 de Fevereiro , 2009, 04:01:05 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Triplo X

Citar* Criado para aqueles que programam em outra linguagem mas também necessitam de PHP

Neste tópico mostrarei um exemplo simples, mas eficaz.

Um cliente meu necessitou de receber formulários por e-mail, já que seu site era apenas em html + alguns menus e animações em flash (nada d+).

Daí eu não sabia como ia fazer isso, pois o jeito mais comum junto com HTML puro seria utilizando PHP e eu mal sabia uma linha.
Foi aí então que o @Reeves me deu uma ajudinha e consegui reformular este tópico. =D

Primeiro (e se você quiser), utilize uma validação em ajax.

CitarMas onde encontrerei, sou novato?!
Bem aqui, brother: Dreamweaver - Validação de formulário em AJAX

Depois é criada a página em php para tratar o formulário.

<div id="container">
  <div id="header">
    <h3>Informações</h3>
  <!-- end #header --></div>
  <div id="mainContent">
    <?php
$emailDestino "seu_email@mail.com";
$nome $_POST["nome"];
$email $_POST["email"];
    
$evento $_POST["evento"];
    
$data $_POST["data"];
    
$local $_POST["local"];
    
$cidade $_POST["cidade"];
    
$ap $_POST["ap"];
    
$oa $_POST["oa"];
    
$pe $_POST["pe"];
    
$comments $_POST["comentarios"];

$assunto "Orçamento - Sonorização";
//$mensagem = $_POST["mensagem"]; // neste caso seria apenas um campo para mensagem...
$mensagem 'Orcamento - Sonorização:

Endereço IP: '
.$REMOTE_ADDR.'

    De: '
.$nome.'
    E-mail: '
.$email.'


    DADOS DO EVENTO

    Evento: '
.$evento.'
    Data: '
.$data.'
    Local: '
.$local.'
    Cidade: '
.$cidade.'
    Atração principal: '
.$ap.'
    Outras atrações: '
.$oa.'
    Público estimado: '
.$pe.'
    Observações: '
.$comments.'
'
.$mensagem;

    
$validarEmail '/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';

    
// certificar de que o formulário está sendo postado de meu servidor
    
if(!(isset($_SERVER['HTTP_REFERER']) &&
    
stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))) {
    
$serverInvalido=true;
    echo 
'<center><font color="#000000" size="4" face="arial">Você não tem permissão para fazer isso!<p></font></center>';
    }


    elseif (
preg_match_all("/<a|http:/i"implode($_POST), $out) > 0) {
    echo 
'<center><font color="#000000" size="4" face="arial">É proibido postar qualquer link neste formulário!</font></center>';
   
// exit;  ela encerra o código nesta linha
    
}

    elseif (
$nome == "") {
    
/* também poderia ser assim:
      elseif (empty($nome)) { */
echo '<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com seu nome!<p></font></center>';
    }

   elseif (
$email == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com seu e-mail!<p></font></center>';
    }

   elseif (!
preg_match($validarEmail$email)) {
   echo 
'<center><font color="#000000" size="4" face="arial">O e-mail "<u>'.$email.'</u>" não parece ser válido!<p></font></center>';
   }

   elseif (
$evento == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com o evento!<p></font></center>';
    }

   elseif (
$data == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com a data do evento!<p></font></center>';
    }

    elseif (
$local == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com o local do evento!<p></font></center>';
    }

   elseif (
$cidade == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com a cidade onde acontecerá o evento!<p></font></center>';
    }

    elseif (
$ap == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com a atração principal!<p></font></center>';
    }

    elseif (
$oa == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com a(s) outra(s) atração(ões)!<p></font></center>';
    }

    elseif (
$pe == "") {
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, volte e preencha com o público estimado!<p></font></center>';
    }


    
// checa se possui conteúdo repetido pelo usuário nos inputs
    
elseif($nome == $email) {
     
$spam=true;
    echo 
'<center><font color="#000000" size="4" face="arial">Por favor, não brinque com o formulário!<p></font></center>';
    }


    elseif (
mail($emailDestino,$assunto,$mensagem,"From: $email")) {
    echo 
'<center><font color="#000000" size="4" face="arial">'.$nome.', <p>Recebemos o seu e-mail com sucesso!<p>Entraremos em contato o mais rápido possível.</font></center> ';
    }
   
?>

<!-- end #mainContent --></div>
  <div id="footer">
    <p><a href="sonorizacao.htm"><font color=blue face="verdana" size="2">voltar</font></a></p>
  <!-- end #footer --></div>
<!-- end #container --></div>


Bom, eu utilizei validações separadamente, o que é mais trabalhoso.
Ao invés de ser um if(nome == "") poderia ser if(empty(nome) or (empty(email))... e por aí vai...

Mas eu assumo: Formail em PHP é bem menos trabalhoso do que em Java, pois até a lógica da coisa é mais profissional.  ;D
Não me venha dizer que é melhor que alguém que eu te espanco!
Todos não passamos de ratinhos que morrerão um dia como todos os outros...