Script de formulário de contato com confirmação em php
Arquivo de (PHP, Scripts) por Jonas Olmos em 04-04-2008 - 12,606 visualizações
Tags: formmail, Formulário de contato, formulário de contato php, PHP
Fala Pessoal, após diversos pedidos e e-mails recebidos, começaremos a alimentar o MX Masters com scritps e tutoriais em PHP. Primeiramente vamos pelo mais simples e em seguida, passaremos a ver tutoriais e scripts mais avanços que vos auxiliarão a construir websites ou portais de maneira interativa.
Em nosso 1º “capítulo” começaremos por um simples script de formulário de e-mail com resposta automática. Na verdade este script não foi criado por mim. Baixei da “net” há pelo menos 4 anos e sempre utilizo nos sites que construo e que necessitam de uma confirmação automática.
Porém friso mais uma vez que não se trata de um tutorial explicando passo-a-passo como criar o sisteminha, mas sim de um script já pronto, na qual vamos basicamente lhe explicar apenas como configura-lo de uma maneira bem simples e rápida.
Vamos lá!
Nosso script consiste em 3 arquivos. O 1º é o que contém o nosso formulário (contato.html), sendo que no campo “form” vamos chamar um arquivo em PHP (form.php) com todas as nossas configurações de dados e envio para o e-mail desejado.
ARQUIVO: contato.html
<html>
<form name="senddata" method="post" action="form.php">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td class="tahoma-02-cinza"><div align="right">Nome:<b><i><font size="1" face="Verdana" color="#FFFFFF"></font></i></b></div></td>
<td><b><i><font size="1" face="Verdana" color="#FFFFFF">
<input name="nome" type="text" class="fomu" size="38">
</font></i></b></td>
</tr>
<tr>
<td class="tahoma-02-cinza"><div align="right"><b>E-mail:<i><font size="1" face="Verdana" color="#FFFFFF"></font></i></b></div></td>
<td><b><i><font size="1" face="Verdana" color="#FFFFFF">
<input name="email" type="text" class="fomu" size="38">
</font></i></b></td>
</tr>
<tr>
<td class="tahoma-02-cinza"><div align="right">Telefone:<b><i><font size="1" face="Verdana" color="#FFFFFF"></font></i></b></div></td>
<td><b><i><font size="1" face="Verdana" color="#FFFFFF">
<input name="telefone" type="text" class="fomu" id="telefone2" size="38">
</font></i></b></td>
</tr>
<tr>
<td class="tahoma-02-cinza"><div align="right"><b>Cidade:<i><b><i><font size="1" face="Verdana" color="#FFFFFF; color:#C40000"></font></i></b></i></b></div></td>
<td><b><i><b><i><font size="1" face="Verdana" color="#FFFFFF; color:#C40000">
<input name="cidade" type="text" class="fomu" size="38">
</font></i></b></i></b></td>
</tr>
<tr>
<td class="tahoma-02-cinza"><div align="right">Assunto:<b><i><font size="1" face="Verdana" color="#FFFFFF; color:#C40000"></font></i></b></div></td>
<td><b><i><font size="1" face="Verdana" color="#FFFFFF; color:#C40000">
<input name="assunto" type="text" class="fomu" size="38">
</font></i></b></td>
</tr>
<tr>
<td class="tahoma-02-cinza"><div align="right"><b>Mensagem:<i><font size="1" face="Verdana" color="#FFFFFF"></font></i></b></div></td>
<td><b><i><font size="1" face="Verdana" color="#FFFFFF">
<textarea name="textodamensagem" cols="36" rows="4" class="fomu"></textarea>
</font></i></b></td>
</tr>
<tr>
<td></td>
<td><input name="enviar" type="submit" class="formcop" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
</html>
O 2º arquivo é uma página de confirmação (enviado.html). Essa página será exibida quando o usuário preencher os dados e clicar em Enviar. Serve como uma confirmação para o usuário saber que a mensagem foi enviada.
ARQUIVO: enviado.html
<html>
Sua Mensagem foi envada com sucesso
</html>
O 3º e último arquivo é o mais importante de todos. É nele que fica todas as configurações de nosso formulário, tais como o Nome do Site e o E-mail que receberá os dados.
Para que o formulário funcione de acordo com as suas necessidades é muito simples, basta alterar os dados que estão no cabeçado do arquivo listado abaixo (form.php).
Na variável “$nome_do_site” preencha com o nome do seu site ou da sua empresa. Já na variável “$email_para_onde_vai_a_mensagem” preencha com o e-mail que você você deseja receber os formulários. Na variável “$nome_de_quem_recebe_a_mensagem” coloque o nome da pessoa que vai ler a mensagem ou o responsável pelo site, ou então, deixe em branco. E por último, a variável “$exibir_apos_enviar” chama o arquivo ou página que será exibida para o usuário após ele enviar o formulário de contato. Não há nenhuma necessidade de alterar outros ítens e variáveis do arquivo, pois o script pode passar a não funcionar corretamente.
OBS: Se for necessário incluir campos adionais em seu formulário, basta adicionar novos campos de texto e nomeá-los conforme o assunto dentro do arquivo contato.html. Em seguida, adicione o mesmo campo com o mesmo nome na configuração também no arquivo form.php, dentro da variável “$configuracao_da_mensagem_original”, seguindo os mesmos moldes dos campos que já estão configurados. Exemplo: se formos adicionar o campo Endereço, além de adicionar um “input text” no formulário de contato, teremos de adicionar a seguinte linha “Endereço: $endereço \n”, dentro da variável “$configuracao_da_mensagem_original”. Na qual “\n” é o comando para pular uma linha. Muito simples!
ARQUIVO: form.php
<?php
$date = date("d/m/Y h:i");
// ****** ATENÇÃO ********
// ABAIXO ESTÁ A CONFIGURAÇÃO DO SEU FORMULÁRIO.
// ****** ATENÇÃO ********
//CABEÇALHO - ONFIGURAÇÕES SOBRE SEUS DADOS E SEU WEBSITE
$nome_do_site="Seu Site";
$email_para_onde_vai_a_mensagem = "seunome@seuemail.com.br";
$nome_de_quem_recebe_a_mensagem = "Seu Nome";
$exibir_apos_enviar='enviado.html';
//MAIS - CONFIGURAÇOES DA MENSAGEM ORIGINAL
$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";
// FORMA COMO RECEBERÁ O E-MAIL (FORMULÁRIO)
// ******** OBS: SE FOR ADICIONAR NOVOS CAMPOS, ADICIONE OS CAMPOS NA VARIÁVEL ABAIXO *************
$configuracao_da_mensagem_original="
ENVIADO POR:\n
Nome: $nome\n
Email: $email\n
Telefone: $telefone\n
Cidade: $cidade\n
Mensagem: $textodamensagem\n
ENVIADO EM: $date
";
//CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA
// CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO
// "Re: $assunto"
$assunto_da_mensagem_de_resposta = "Confirmação";
$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site <$email_para_onde_vai_a_mensagem>\n";
$configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente,\n$nome_do_site\n\nEnviado em: $date";
// ****** IMPORTANTE ********
// A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE
// ****** IMPORTANTE ********
//ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO
//POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME
//'assunto' NO FORMULARIO DE ENVIO
$assunto_digitado_pelo_usuario="s";
//ENVIO DA MENSAGEM ORIGINAL
$headers = "$cabecalho_da_mensagem_original";
if ($assunto_digitado_pelo_usuario=="n")
{
$assunto = "$assunto_da_mensagem_original";
};
$seuemail = "$email_para_onde_vai_a_mensagem";
$mensagem = "$configuracao_da_mensagem_original";
mail($seuemail,$assunto,$mensagem,$headers);
//ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA
$headers = "$cabecalho_da_mensagem_de_resposta";
if ($assunto_digitado_pelo_usuario=="n")
{
$assunto = "$assunto_da_mensagem_de_resposta";
}
else
{
$assunto = "Re: $assunto";
};
$mensagem = "$configuracao_da_mensagem_de_resposta";
mail($email,$assunto,$mensagem,$headers);
echo "<script>window.location='$exibir_apos_enviar'</script>";
?>
Espero que este script possa lhes ajudar em alguns casos. Considero um dos melhores em PHP e roda na grande maioria dos servidores. Aliás, nunca trabalhei com um servidor que recusou este script.
Dúvidas, problemas no funcionamento e sugestões, postem seus recados ou me envie um e-mail.
Até a próxima! Valeu!
CLIQUE AQUI E FAÇA O DOWNLOAD COMPLETO DO SCRIPT COM OS ARQUIVOS.

Não alterei os campos indicados para permanecerem, apenas coloquei meus dados na parte inicial do codigo e adicionei os campos da mensagems.
Obrigado pelo post.
Parabens pelo post sobre PHP. Sou novo na area, ainda aprendendo, mas chego lá. Gostaria de saber como faço pra inserir o arquivo PHP pra validar o meu formulario.
Se vc perceber, uso um corpo conteúdo pro formulario.
Um abraço, Léder
Estou colocando a form dentro de uma tabela, daí vou lá no codigo e colo, quando volto para o design, o site bagunça tudo…
O que fazer?
Eu fiz o teste aqui e ocorreu tudo certo com o script!
Vocês podem verificar os seguintes pontos:
O arquivo contato e enviado podem estar como .html
Porém, o arquivo form tem que obrigatoriamente estar em .php
Desta forma, ficariam assim:
contato.html
enviado.html
form.php
Além disso é necessário que sua conta de hospedagem suporte PHP. Se sua conta for HTML, o script não funcionará!
Outra coisa a se fazer, é modificar os ítens no arquivo form.php:
Abçs
Bom, o link do form fica assim
C:\Documents and Settings\HR-STUDIO\Desktop\site\form.php
Com a página toda em branco
E fiz o cabeçalho correto
Para você testar tanto esse script como qualquer outro em sua máquina (um servidor local), é necessário usar um programa em seu computador. Indico o Easyphp.
http://www.easyphp.org/index.php
Da maneira que você esta procedendo não irá funcionar.
abçs
Pq só está faltando chegar as informações no meu email, que está chegando a mensagem, porém sem nenhum conteúdo….
Onde eu errei?
Bom, pra quem quiser, o site que fiz através das video aulas da MX master SITE COMPLETO já está online, mas ainda falta o CSS, mas já tá online. Acessem: http://www.farmasantamaria.com
Quero parabenizar e agradece-los pela iniciativa MX MASTER
Abraços
Fantastico..!
É o seguinte como faço pra colocar comentários no meu site tipo o seu, onde cada post tem o seu comentário próprio.
A dúvida é tenho que criar uma tabela para cada post de comentario, ou tem um jeito mais simples tipo só uma que serve pra todoas.
Valeu brow!!!!!!!!
E cada dia seu site ta ficando 1000
Abçs
Vamos preencher o PageRank
Espero a vídeo aula
Grato até ++++++++++++++++++++++
Alguem sabe o que esta acontecendo?
Obrigada!:)
Eu fiz o teste dele aqui e deu certo.
Mande o script com suas formatações em arquivo .txt para contato@mxmasters.com.br
Fico no aguardo!
Muita gente está tendo este problema.
Irei fazer uma vídeo aula mostrando como configura.
Eu fiz os testes aqui e deu tudo certo.
Até Domingo, farei a vídeo aula, ok?
Abçs
ENVIADO POR:
Nome:
Email:
Telefone:
Cidade:
Mensagem:
ENVIADO EM: 04/05/2008 10:21
Os campos estão tudo em branco o q faço???
Galera, para os que querem host gratuitos, vamos seguir a sugestão da Dani.
Como o próprio Jonas informou, o problema na maioria dos casos era o próprio host.
Testei o script de várias formas e deu certo.
Lucas, não deu pra gravar a vídeo aula hoje, pois estou atarefado com a gravação dos DVD´s, mas assim que eu gravar, te aviso individualmente por e-mail, ok?
Abçs a todos!
$headers = “$cabecalho_da_mensagem_original”;
if ($assunto_digitado_pelo_usuario==”s”)
$headers = “$cabecalho_da_mensagem_original”;
if ($assunto_digitado_pelo_usuario==”s”)
Falou galera e abraços aos amigos do mx masters esses sim são fera e merece todos os creditos
se é que precisa validar…
Abraços!!
Veja se essa vídeo aula te ajuda: http://www.mxmasters.com.br/macromedia-dreamweaver/dremweaver-efeitos-em-formularios/
Forte abraço!
tava atras disso msm..
potz to achando tudo aki o.o
DAI QUANDO eu dou f12 pra ver. eu cliko em enviar mensagem e n aparece aquela mensagem de confirmação
aparace isso
Arquivo não encontrado
O Firefox não conseguiu localizar o arquivo em /D:/Meus documentos/Sites/HTML/BRASILYELLOWBLUE/PHP/$exibir_apos_enviar.
* Verifique se há algum erro de digitação no nome do arquivo, como uma letra minúscula em vez de maiúscula.
* Verifique se o arquivo foi movido, renomeado ou excluído.
Mas eu n sei como arrumar ;D
Baxxei o EasyPhp mas n sei usa-lo
O script só funciona em um servidor de hospedagem!
Abçs
Abçs
O MX MASTER cada dia melhor em?
Quero dar um toc sbre o Newsletter
que ainda não esta fusionando ok.
Um forte abraço para vocês.
Parse error: parse error, unexpected T_VARIABLE in C:\Arquivos de programas\EasyPHP 2.0b1\www\form.php on line 16
achei mto bom o post, vai ajudar mta gente,
agora nao sei se vc vai poder me ajudar, pq comigo não está funcionando mto bem, seguinte, o email com os dados do formulário não está chegando em minha caixa, mais o email de resposte está chegando.
já testei com outros emails meus pessoais como hotmail e gmail e funciona normal. só não funciona qdo utilizo o email do meu dominio que é contato@zenmaster.com.br, o email com os dados do formulário não chega nesta caixa nem em nenhuma outra com o meu dominio, já fiz teste enviando email manualmente, a caixa está ok, já olhei o anti span, está desativado. mais não sei pq não está chegando nada nesta caixa referênte ao código php.
a minha duvida é se este problema pode estar ocorrendo devido à algum bug no código php, ou se o problema é da minha caixa. meu site esta hospedado pela Tecla.com.br. espero que possam me ajudar.
desde já agradeço.
Meu Host e pago e tem permição a PHP.
mais como alguns usuarios disse ..
o email chega todo em branco.
Ajuda ae !
Vlwzz ..
Por incrivel que pareça, eu acho que ja consegui aprende algumas coisas..ahueiahuieahiu
Funcionou perfeitamente, upado no host em que a Dani indicou, sem problema algum.
Porém tenho uma duvida, se for no caso um form de cadastro, é no mesmo estilo? ou tem muita diferença?
Brigadão mais uma vez, vcs ai iluminaram minha cabeça, agora eu não passo mais minhas tardes trovando fiado no msn! aheuiaheauihea
The file link that you requested is not valid.
Teria como verificar este problema? Agradeço imensamente e parabenizo pela didâtica apresentada neste tutorial, e aproveitando gostaria de saber se não existe condições para podermos baixar as video-aulas do site que nos auxiliariam muito nos trabalhos em off.
O link está consertado.
Podem fazer o download: http://www.mxmasters.com.br/arquivos/upload/formulario.rar
sera q tem concerto?
Isso pode ser do host. Verifique com o suporte da sua hospedagem.
[]´s
so q eu recebo um e-mail em branco xD
ENVIADO POR:
Nome:
Email:
Telefone:
Cidade:
Mensagem:
ENVIADO EM: 16/06/2008 08:05
Tudo em branco
Nome:
Email:
Telefone:
Cidade:
Mensagem:
ENVIADO EM: 04/05/2008 10:21
Meu contato.html esta pronto e salvo como .html, aonde enfio o formulario php no body ou tenho que salvar com php to na confusão,
daria para me dar uma força
O form.php você salva como .php
O resto pode ser em html mesmo.
[]´s
no site que fiz e está maravilhoso.
Muiiiiiiiiiiiiiito bommmmmm.
fiz o download certinho dos arquivos para o formulário e modifiquei tudo certinho tb dentro do código php.
Mas na hora de testar…aparece Mensagem enviada com sucesso, tudo correto até aí. O problema é que não chega na minha caixa de email. Não chega nada nada nada.
Para alguns que fizeram isto e que comentaram, notei que chega, mas chega sem nada.
bom, não sei se é porque estou rodando do meu próprio servidor web.
Rodo o wamp que possui PHP, MySql, Apache, etc.
Portanto, tenho PHP instalado e tudo configurado.
Qual seria o problema?!
Acho que deveria funcionar corretamente.
Ahhh..só uma observação.
No arquivo form.php há um pequeno erro. Creio eu que seja um erro.
na linha 15, onde está o seguinte código: $cabecalho_da_mensagem_original=”From: $name \n”;
a variável $name não existe. Não seria $nome?
Pois ele pega o nome da pessoa que enviou a mensagem pelo formulário. E o nome do input do arquivo contato.html é nome.
vlw
No servidor interno não funciona!
[]´s
Tive problemas, assim como muitos, pois recebia a mensagem em branco…entrei em contato com o servidor, duvidando que poderia ser esse o problema, mas realmente era, sendo que o servidor suporta php…porem o problema estava em habilitar as “variaveis globais”…nao sei muito bem o que he isso, mas o servidor nao reconhecia… mas agora tah funcionando muito bem…
Valeu…Parabens
No Aguardo! Muito Obrigado!
Exemplo: se eu escrever pão no formulario, no meu email chega P?o.
como poderia consertar isso?
Em primeiro lugar agradeço pela vídeo aula do Felipe!
Para quem tem certeza que o servidor tem PHP instalado, vai aqui um dica da nossa.
Alguns servidores não deixam o Sistema Global ativado!
Vejam só para entender o link: http://br.php.net/register_globals
Se você criar um arquivo no bloco de notas com estas informações:
register_globals = On
e salvar como: php.ini
“reparem que este arquivo criará um ícone como um bloco de notas e uma engrenagem”. Ou seja, é um arquivo de iniciação que deverá ativar o PHP do script do formulário na mesma pasta inde estão os arquivos do formulário.
Coloca o arquivo php.ini dentro da pasta onde estão os 3 arquivos do formulario no servidor. Pronto!
Todos scripts em php como enquetes, newslatter etc que são em php, coloque o arquivo php.ini dentro da pasta que irá executar tudo direitinho.
Um abraço a todos!
Sobre a sua dúvida em adição de campos extras no formulário, eu ensino nesta vídeo aula: http://www.mxmasters.com.br/php/php-configurando-formulario-de-contato/
Ensino também a configuração do mesmo.
[]´s
Pessoal. vamos seguir as orientações da Drucila no comentário acima.
Muito obrigado.
[]´s
O formulário esta dando quase certo!!!
o problema dele é quando eu recebo o e-mail do site, ele nao me passa nenhuma informação. O e-mail chega assim para mim:
ENVIADO POR:
Nome:
Email:
Telefone:
Cidade:
Mensagem:
ENVIADO EM: 15/07/2008 01:17
nao aparece nenhuma informação que coloquei no site….o que pode ser?
desde já agradeço!
[]´s
[]´s
obrigado!
Se mesmo assim não funcionar, tente um contato com o suporte de sua hospedagem…
[]´s
Saudações, preciso disso urgente.
Bom, você pode alterar o script sim. Na verdade, você inclui uma linha no formulário para ele funcionar, mas você pode fazer o seguinte:
1. Ligar para o suporte hostnet ou abrir um chamado (Será atendido rapidamente e se não souber configurar, eles configuram para você).
2. Utilizar o formulário que a hostnet disponibiliza já customizado e configurado.
[]´s
Bem, o site que estou fazendo está publicado tem suporte para PHP e tá com o mesmo problema de algumas pessoas. Estou recebendo o formulário em branco. Mas não era essa a minha pergunta. Gostaria de saber se tenho como aproveitar a página de contato que eu já tinha feito pra usar esse script ou como faço para adaptá-lo?
Abçs.
Tem como você aproveitar sim! Basta você incluir o conteúdo na pasta existente.
[]´s
Abração!
eu copiei o script no local desejado da página que eu havia criado, peguei essa página renomeei para contato.php e coloquei na pasta form como pede o esquema passado. Até aí tudo bem, só que quando fui tentar fazer um teste pelo site não deu certo, sinceridade não sei o que fazer!
abçs
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
[]´s
Faz o seguinte: Assista às duas últimas vídeo aulas de PHP que fiz e veja se você consegue resolver:
http://www.mxmasters.com.br/categoria/php/
Caso não consiga, deixe um comentário.
[]´s
abraço felipe e muito Obrigado…
até mais
[]´s
[]´s
vlw
[]´s
fiquei com umas dúvida ,no contato html,posso botar o (meta refresh) ou só na página (PHP)? e tambem como se bota o próprio na url.não visualizei muito bem os pontos e virgulas .
obrigado parabèns!!!!!!
[]´s
Obrigado
Estou com um problema que os e-mails que meu script envia, estão sendo acusados no filtro anti-spam do Hotmail.
Gostaria de saber se esse script ocorre o mesmo ou se ele não é entendido como spam.
Desde já,
Obrigado pela sua atenção.
Alguem tem alguma solução?
grato