Uma história construída com confiança
MM HOSPEDAGEM

Tecnologia e infraestrutura acompanhando o crescimento dos nossos clientes.

Nossa história continua
M M H O S P E D A G E M

Evoluir não é apagar o passado.

Uma nova identidade

Evoluímos.

A experiência e a confiança da MMHospedagem agora ganham uma marca preparada para o futuro.

A MMHospedagem agora é

Tecnologia que impulsiona.

A mesma confiança, agora com uma estrutura ainda mais preparada para acompanhar sua empresa.

Preparando a nova experiência
0800 490 1900
Artigo da base MVO

Como criar um formulário de contato em PHP com Captcha

Conteúdo técnico, orientações práticas e apoio para acelerar sua operação com a MVO.

Base de conhecimento Autoatendimento Suporte técnico
Leitura objetiva e pronta para compartilhar

Imprima este material ou avance para o suporte humano caso precise de acompanhamento em um caso específico.

Neste tutorial vamos criar um formulário de contato em PHP utilizando o recurso de ReCaptcha para o envio de e-mail.

Para criar este formulário siga o passo a passo abaixo:

CADASTRANDO O CAPTCHA NO GOOGLE
Antes de iniciar qualquer configuração, vamos precisar realizar alguns passos no sistema de ReCaptcha do Google. Caso tenha dúvidas você pode seguir o nosso tutorial de Como criar um ReCaptcha do Google.

CONFIGURANDO A FUNÇÃO allow_url_fopen
Antes de passar para a etapa do formulário de contato, vale conferir se a sua hospedagem está com a função allow_url_fopen ativada no PHP. Para isto basta seguir os passos abaixo:

Windows - Plesk
: Função ativada por padrão.Linux - cPanel:
Acessando o cPanel do domínio, clique no ícone "Selecionar Versão do PHP", selecione uma versão do PHP diferente do padrão do servidor e depois clique no link superior direito escrito "Switch To PHP Options" para alterar ou habilitar a função desejada.


CRIANDO O FORMULÁRIO DE CONTATO EM HTML
Após realizar toda a configuração do ReCaptcha, é necessário criar um formulário simples de contato em HTML.
Código em HTML do arquivo: formulario-contato.php

<?php include 'envia.php';
?>
<html>
<head>
<meta charset="utf8">
<title>Formulário de contato</title>
<!-- Aqui adiciona o script do ReCaptcha -->
<script src='https://www.google.com/recaptcha/api.js'></script>

<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Este é um teste de formulário de contato</h1>
<form method="POST" action="formulario-contato.php">
<label>Digite seu nome:
<input type="text" name="nome" value="" placeholder="ex: Nome" required>
</label>
<label>Digite seu e-mail:
<input type="email" name="email" value="" placeholder="ex: [email protected]" required>
</label>
<label>Digite o assunto:
<input type="text" name="assunto" value="" placeholder="ex: Assunto" required>
</label>
<label>Digite sua mensagem:
<input type="text" name="msg" value="" placeholder="Digite sua mensagem aqui" required>
</label>

<!-- Div do ReCaptcha foi adicionado no final do formulário -->
<div class="g-recaptcha" data-sitekey="|*SEU-SITE-KEY*|"></div>

<input class="send" type="submit">
</form>
</div>
</body>
</html>
Código CSS- style.css
body{
margin: 20px 0;
font-family: Arial,sans-serif;
font-size: 12px;
}
label{
display:block;
margin-top:15px;
}
input{
display:block;
height:40px;
border:1px solid #e5e5e5;
background:#f0f0f0;
padding:10px;
margin-top: 5px;
width: 100%;
}
.container{
width: 960px;
margin:0 auto;
}
.g-recaptcha{
margin-top:15px;
}
.send{
background: #46ac00;
color: #fff;
border: 0px;
}


VALIDANDO O FORMULÁRIO DE CONTATO E ENVIANDO E-MAILS

Agora que o formulário está montado e configurado com o ReCaptcha será necessário executar todas as validações e configurar o envio de e-mails. Para isto, utilizaremos a classe PHPMailer. Ela será responsável por fazer todo o procedimento de envio do e-mail, seguidamente da validação do ReCaptcha.

Você precisará destes arquivos para que a classe PHPMailer funcione:

PHPMailerAutoload.php – Responsável por carregar todas as dependências da classe PHPMailer
class.phpmailer.php – A classe principal do PHPMailer
class.smtp.php – A classe que vai permitir os envios de e-mails via SMTP

Estes arquivos deverão estar na mesma pasta do seu arquivo envia.php que será criado logo abaixo. Neste arquivo será necessário efetuar as configurações com os dados do seu servidor de SMTP e do SECRET-KEY do ReCaptcha.

Código em PHP do arquivo: envia.php

<?php

//Defino a Chave do meu site
$secret_key = '|*SEU-SECRET-KEY*|';

//Pego a validação do Captcha feita pelo usuário
$recaptcha_response = $_POST['g-recaptcha-response'];

// Verifico se foi feita a postagem do Captcha 
if(isset($recaptcha_response)){

// Valido se a ação do usuário foi correta junto ao google
$answer = 
json_decode(
file_get_contents(
'https://www.google.com/recaptcha/api/siteverify?secret='.$secret_key.
'&response='.$_POST['g-recaptcha-response']
)
);

// Se a ação do usuário foi correta executo o restante do meu formulário
if($answer->success) {

// Carrego a classe PHPMailer através do Autoload
include "PHPMailerAutoload.php";

// Instancio a classe PHPMailer
$msg = new PHPMailer();

// Faço todas as configurações de SMTP para o envio da mensagem
$msg->CharSet = "UTF-8";
$msg->isSMTP(); 
$msg->Host = '|*MAIL.SEUDOMINIO.COM.BR*|'; 
$msg->SMTPAuth = true; 
$msg->Username = '|*[email protected]*|'; 
$msg->Password = '|*SUA-SENHA*|'; 
$msg->Port = 587; 
$msg->SMTPAutoTLS = false;
$msg->AuthType = 'PLAIN';

//Defino o remetente da mensagem
$msg->setFrom('|*[email protected]*|','|*NOME-DO-SEUEMAIL*|');

// Defino a quem esta mensagem será respondida, no caso, para o e-mail
// que foi cadastrado no formulário
$msg->addReplyTo($_POST['email'], $_POST['nome']);

// Defino a mensagem como mensagem de texto (Ou seja não terá formatação HTML)
$msg->IsHTML(false);

// Adiciono o destinatário desta mensagem, no caso, 
//minha conta de contatos comerciais.
$msg->AddAddress('|*[email protected]*|', '|*NOME-DO-SEUEMAIL*|');

// Defino o assunto que foi digitado no formulário
$msg->Subject = $_POST['assunto'];

// Defino a mensagem que foi digitada no formulário
$msg->Body = $_POST['msg'];

// Defino a mensagem alternativa que foi digitada no formulário.
// Esta mensagem é utilizada para validações AntiSPAM e por isto
// é muito recomendado que utilize-a
$msg->AltBody = $_POST['msg'];

// Faço o envio da mensagem
$enviado = $msg->Send();

// Limpo todos os registros de destinatários e arquivos 
$msg->ClearAllRecipients();

// Caso a mensagem seja enviada com sucesso ela retornará sucesso
// senão, ela retornará o erro ocorrido 
if ($enviado){
echo "E-mail enviado com sucesso!";
}
else {
echo "Não foi possível enviar o e-mail.";
echo "<b>Informações do erro:</b> " . $msg->ErrorInfo;
}
}

// Caso o Captcha não tenha sido validado 
//retorno uma mensagem de erro. 
else {
echo "Por favor faça a verificação do captcha abaixo";
}
}

A primeira coisa que este arquivo fará é validar o Captcha, em seguida ele iniciará a montagem da mensagem e por fim o envio do e-mail.
Pronto! O formulário de contato está configurado e pronto para ser utilizado!

 

Var dette svaret til hjelp?

Seu feedback ajuda a equipe da MVO a manter a base mais útil e objetiva.

Relacionados

Relaterte artikler

Outros conteúdos que podem ajudar na continuidade do seu atendimento.

Relacionado

Qual a diferença entre FTP Passivo (PasvMode) e FTP Ativo

Entenda nesse artigo a diferença entre os dois tipos de FTP(Ativo e Passivo).   O FTP é um serviço que trafega exclusivamente em protocolo TCP, não utiliza nenhum controle...
Relacionado

Exemplos de formulários de contato com Autenticação de SMTP - ASP e PHP

Bem-vindo ao nosso tutorial sobre como criar formulários de contato com autenticação de SMTP usando ASP e PHP. Neste guia, você aprenderá como criar formulários de contato...
Relacionado

Como criar uma tarefa agendada

Agendamento de Tarefas 1. Se você precisar executar scripts em seu servidor em um horário específico, use o recurso do agendador de tarefas em sua hospedagem para...
Relacionado

Como criar um PHP INFO

O PHP INFO serve para verificar a versão do PHP e as diretivas do PHP que estão habilitadas em sua hospedagem. Preparamos esse tutorial para lhe ensinar como criar uma página...
Relacionado

Como forçar o meu site a abrir com HTTPS no navegador

Preparamos esse tutorial para ensinar você a forçar o seu site a abrir diretamente com HTTPS no navegador. Você pode forçar o seu site para iniciar todas as solicitações com...

Powered by WHMCompleteSolution