Formulário de Contato DMDS com reCaptcha, Ajax e PHP
Neste exemplo, vamos mostrar um formulário de contato para DMDS feito em HTML com Bootstrap e Ajax, que é usado para um usuário colocar seu nome, e-mail e telefone, e um e-mail de agradecimento foi enviado para eles por ter contatado, além disso para integrar seus dados com o DMDS.
reCAPTCHA
Para executar o reCaptcha, é necessário ter uma conta do Gmail e, com essa conta, fazer login nesta página https://www.google.com/recaptcha/ para registrar o URL que você deseja proteger, e é aí que você obtém um SiteKey e uma SecretKey.
O SiteKey é aquele que aparece no HTML abaixo, visível como data-sitekey.
O SecretKey é aquele usado no código PHP para se comunicar com o Google.
HTML con Bootstrap
Em seguida, criamos o arquivo HTML contact.html onde colocaremos o formulário, usando o Bootstrap como uma biblioteca base e o jQuery para as chamadas do Ajax.
Este é o cabeçalho do HTML :
<!DOCTYPE html> <html lang="es"> <head> <title>DMDS Contact Form</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <!-- Popper JS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script> <!-- Latest compiled JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> <script src='https://www.google.com/recaptcha/api.js'></script> </head>
Este é o CORPO HTML
<body> <div class="container-fluid"> <h2>Form de Contacto DMDS</h2> <form id="ajax-contact" method="post" action="dmds-mailer.php"> <div class="field" > <label for="name" class="col-sm-3">Nombre:</label> <input type="text" class="col-sm-3" id="name" name="name" required > </div> <div class="field"> <label for="email" class="col-sm-3" >Email:</label> <input type="text" class="col-sm-3" id="email" name="email" required > </div> <div class="field"> <label for="telefono" class="col-sm-3" >Teléfono:</label> <input type="text" id="telefono" class="col-sm-3" name="telefono" required> </div> <div class="field"> <label class="col-sm-3">Auth:</label> <label class="g-recaptcha col-sm-3" name="g-recaptcha-response" data-sitekey="6LeYcX4UAAAAAB--CCmu0kOssB_l9--sLTxsJVFv"></label> </div> <div class="field col-sm-3"> <button type="submit" class="btn btn-primary">Enviar</button> </div> </form> </div> <div id="form-messages"></div> <script src="app.js"></script> </body> </html>
Javascript AJAX
Como você pode ver no final, o arquivo app.js é incluído para que seja executado no final do carregamento HTML, é o código Javascript que contém o AJAX (o formulário HTML tem um ID “ajax-contact”, que é a variável de formulário que é extraída no começo do código Javascript. Também vemos no formulário, que a ação terminará chamando dmds-mailer.php para a sua execução, só que isso acontecerá através do javascript, que será quem chamará o dmds-mailer .php para a sua execução, e mostra o resultado no div “form-messages”:
$(function() {
// Get the form.
var form = $('#ajax-contact');
// Get the messages div.
var formMessages = $('#form-messages');
// Set up an event listener for the contact form.
$(form).submit(function(e) {
// Stop the browser from submitting the form.
e.preventDefault();
// Serialize the form data.
var formData = $(form).serialize();
// Submit the form using AJAX.
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
})
.done(function(response) {
// Make sure that the formMessages div has the 'success' class.
$(formMessages).removeClass('error');
$(formMessages).addClass('success');
// Set the message text.
$(formMessages).text(response);
// Clear the form.
$('#name').val('');
$('#email').val('');
$('#message').val('');
})
.fail(function(data) {
// Make sure that the formMessages div has the 'error' class.
$(formMessages).removeClass('success');
$(formMessages).addClass('error');
// Set the message text.
if (data.responseText !== '') {
$(formMessages).text(data.responseText);
} else {
$(formMessages).text('Oops! An error occured and your message could not be sent.');
}
});
});
});
O resultado do envio do Ajax será mostrado dentro do div chamado “form-messages” que aparece no final:
<div id="form-messages"></div>
Conectar aO DMDS
Em seguida, o arquivo dmds-mailer.php, devemos primeiro resolver se é um robô ou não:
<?php
function tagSimple($k, $v)
{
return array(
"tag" => $k,
"reemplazo" => $v
);
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
'secret' => 'Your-secret-password',
'response' => $_POST["g-recaptcha-response"]
)
));
$response = curl_exec($curl);
curl_close($curl);
$captcha_success = json_decode($response);
if (!$captcha_success->success) {
echo "Eres un robot! " ;
}
Uma vez que tenhamos certeza de que os dados do formulário foram ativados por uma pessoa, continuaremos com a remessa através do DMDS. Primeiro você deve ter seu SERVER_KEY fornecido pela Planisys para o serviço DMDS e, em seguida, ter criado uma campanha cujo ID está listado abaixo:
$serverKey = "BD39E7A0-3DE7-4039-8F11-625E9D2FDC10"; $url = "https://dmds-sunombre.planisys.net/api-wsdl.php"; $campanaId = "746eab3e-33a3-aebd-22f6-5bfe59db804a";
Então você deve extrair os campos do formulário higienizado (isto é, sem caracteres que possam implicar uma exploração):
$nombre = strip_tags(trim($_POST["name"]));
$nombre = str_replace(array("\r","\n"),array(" "," "),$nombre);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$telefono = trim($_POST["telefono"]);
Então você deve inicializar o componente SOAP:
//Configuracion del Cliente SOAP
ini_set('soap.wsdl_cache_enabled', 0);
$opt = array(
"location" => $url,
"uri" => "urn:xmethods-delayed-quotes",
"style" => SOAP_RPC,
"use" => SOAP_ENCODED
);
$client = new SoapClient($url."?wsdl", $opt);
Inicialize a estrutura de dados que o server_key possui e a origem (isto é, a base do assinante) a ser usada:
$tagsNuevo = array(
'simples' => array(
tagSimple("XYZTELEFONOXYZ", $telefono),
)
);
$params = array(
'suscriptos' => array(
'0' => array(
'email' => $email,
'origenes' => array(
'0' => 'Suscriptos2015'
),
)
),
'serverKey' => $serverKey
);
Em seguida, chame a API para carregar o endereço de e-mail que acabou de ser inserido no banco de dados Suscriptos2015:
$client->__soapCall('cargarSuscriptos', $params);
A próxima operação consiste em enviar uma confirmação por e-mail da assinatura para o usuário que preencheu o formulário, novamente inicializa a estrutura de dados e, em seguida, envia por meio do SOAP:
$params1 = array(
'suscriptos' => array(
'0' => array(
'email' => $email,
'nombre' => $nombre,
'tags' => $tagsNuevo
)
),
'campanaId' => $campanaId,
'soloSuscribir' => false,
'email' => array(
array(
'piezaEnUtf8' => true,
),
),
'serverKey' => $serverKey
);
$client->__soapCall('enviarEmails', $params1);
Criar uma campanha no DMDS
Para criar a campanha no DMDS, antes de mais nada, você precisa fazer o login no sistema com seu nome de usuário e senha. Quando estivermos dentro do sistema DMDS, criaremos a campanha. Na página principal está todo o menu DMDS, como visto na foto. Como você pode ver, há uma seção de campanhas, é aí que temos que configurar as coisas. Clique em “Nova campanha da API”, que nos permitirá criar a campanha.
Depois que clicamos em “Nova api de campanha”, uma nova janela é aberta com o formulário inteiro para criação. A criação é baseada em duas etapas, a primeira etapa é preencher os campos gerais, como o nome da campanha, alguma descrição dela, etc. É importante aqui preencher o campo nome, os outros campos são opcionais.
A segunda parte consiste em preencher os dados de envio. Os campos obrigatórios a serem preenchidos são o nome do remetente, o e-mail do remetente, adicionar os piezos por meio de um arquivo ou adicioná-los usando um URL. Todos os outros campos são opcionais. Depois que todos os campos estiverem preenchidos, clique no botão Salvar. Com essa ação, acabamos de criar nossa campanha.
A peça que precisa ser enviada deve ter o seguinte formato, com uma das três extensões html, htm ou tpl.
*Como adicionar a peça:
Para adicionar a peça, existem duas maneiras de fazer isso. A primeira opção é através da URL, como você pode ver na configuração da remessa, há uma seção que diz ‘Search Piece via URL’. Ao ativar essa parte, vemos a caixa de texto para adicionar o URL.
A segunda maneira de adicionar uma peça é enviar o arquivo diretamente para o DMDS.
* Tenha em mente que o formato da peça deve ser .hmt, .html ou .tpl.




