Pregunta:
Fecha: 08-11-2017 07:46:28
(En Español)
El código del formulario es:
<form class="form fw-row fo3" id="fo3" action="lead.php" method="post">
<div class="fw-col-sm-6 fw-col-md-6">
<input name="name" id="name" type="text" placeholder="Nombre *" class="style1 frmname">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="country" id="country" type="text" placeholder="País *" class="style1 frmcountry">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="phone" id="phone" type="text" placeholder="Número de teléfono *" class="style1 frmphone">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="email" id="email" type="text" placeholder="Correo electrónico *" class="style1 frmemail">
</div>
<div class="fw-col-sm-12 fw-col-md-12">
<select name="procedure" id="procedure" class="style1 procedure">
<option>Procedimiento</option>
<option value="Cirugia Nariz">Cirugía de Nariz</option>
<option value="Trasplante Capilar">Trasplante Capilar</option>
<option value="Liposuccion">Liposucción</option>
<option value="Pecho">Pecho</option>
<option value="Estiramiento Facial">Estiramiento Facial</option>
</select>
</div>
<div class="fw-col-md-12">
<div class="tac">
<div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxxxxxxxx"></div>
</div>
</div>
<div class="fw-col-md-12">
<div class="tac">
<input type="hidden" name="seccion" value="Inicio">
<button type="submit" class="button-style1 blue btnsubmit"><span>Más información</span></button>
</div>
</div>
</form>
Código del php que recibe los datos de formulario
<?
header("Content-Type: text/html;charset=utf-8");
require "classes/class.phpmailer.php";
require('class.conexion.php');
require_once ('recaptchalib.php');
// Limpio las variables recibidas:
$_POST['name'] = trim($_POST['name']);
$_POST['country'] = trim($_POST['country']);
$_POST['email'] = trim($_POST['email']);
$_POST['phone'] = trim($_POST['phone']);
$_POST['procedure'] = trim($_POST['procedure']);
$_POST['seccion'] = trim($_POST['seccion']);
$nombrelead = $_POST['name'];
$pais = $_POST['country'];
$email = $_POST['email'];
$telefono = $_POST['phone'];
$procedimiento = $_POST['procedure'];
$seccion = $_POST['seccion'];
//Verifico si vienen vacias, si es así regreso a la sección anterior
if (empty($nombrelead)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
} elseif (empty($pais)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
} elseif (empty($email)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
}
$fecha=date("d/m/Y");
$hora=date("g:i a");
$idioma='1';
$comentarios = '-';
//Validación de recapathcha
//Asignas la clave secreta del paso 4 a una variable llamada $claveSecreta
$claveSecreta = "xxxxxxxxxxx";
// Por default asumimos que tenemos una respuesta vacía
$respuesta = null;
//Creamos una instancia de la clase que incluimos
$captcha = new ReCaptcha($claveSecreta );
//Validamos que si hayamos recibido por post la respuesta que recibimos de google al validar el captcha
if ($_POST["g-recaptcha-response"])
{
//Le pedimos a google que valide la respuesta del captcha; para
//ello enviamos nuestro dominio y la respuesta
$respuesta = $captcha ->verifyResponse
(
"www.drpiletti.com",
$_POST["g-recaptcha-response"]
);
}
//Si la respuesta que obtenemos de la comprobación es diferente a null y además es exitosa...
//...listo! todo está en orden y entonces podemos enviar el correo electrónico
if ($respuesta != null && $respuesta ->success) {
$conexion = new mysqli($host_db, $user_db, $pass_db, $db_name);
if ($conexion->connect_error) {
die("La conexion falló: " . $conexion->connect_error);
}
//insertamos en la base de datos el registro del usuario
$sql = "INSERT INTO
usuarios_formulario (nombre,email,telefono,pais,procedimiento,comentarios,idioma,fecha,horario)
VALUES
('$nombrelead','$email','$telefono','$pais','$procedimiento','$comentarios','$idioma','$fecha','$hora')
";
if ($conexion->query($sql) === TRUE) {
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsHTML(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = 'mail.drpiletti.com'; // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = 'info@drpiletti.com'; // SMTP account username
$mail->Password = 'xxxxxxx'; // SMTP account password
$mail->AddAddress($email, $nombrelead);
$mail->SetFrom('info@drpiletti.com', 'LEAD Dr. Piletti');
$mail->AddBCC('joseseocancun@gmail.com', 'Jose Romero');
$mail->AddBCC('jea.cancun@gmail.com', 'Fco Guzman');
$mail->Subject = 'Lead Web Dr. Piletti idioma esp';
$mail->Body="
<html>
<head>
<title>Correo de Solicitud de información</title>
</head>
<body>
<table style='width: 780px; margin: 0 auto;'>
<tr>
<th style='text-align: center;'>
<h2> Solicitud de información en www.drpiletti.com </h2>
</th>
</tr>
<tr>
<th style='text-align: center;'>
<p>Gracias por contactarnos, en breve nuestro asesor se pondrá en contacto con usted. El presente correo es un resumen de los datos que nos proporciono. Si alguno de ellos es incorrecto, por favor, envienos un correo a info@drpiletti.com </p>
</th>
</tr>
<tr>
<td style='width: 100%; padding-right: 6px;'>
<table style='width: 100%;'>
<th colspan='2' style='background:#bf0411; text-align: center; padding: 10px 0px;'>
<span style='color:#fff; font-weight:400;'>DATOS PERSONALES</span>
</th>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Nombre : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($nombrelead)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Pais : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($pais)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Correo : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($email)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Teléfono : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($telefono)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Procedimiento : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($procedimiento)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Sección : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($seccion)."</td>
</tr
</table>
</td>
</tr>
</table>
</body>
</html>
";
if(!$mail->Send()){
echo "Error sending: " . $mail->ErrorInfo;
echo '<script type="text/javascript">
window.location = "error.html"
</script>';
}
else{
echo '<script type="text/javascript">
window.location = "gracias.html"
</script>';
}
}
else {
//echo "Error al ingresar visita" . $query . "<br>" . $conexion->error;
echo '<script type="text/javascript">
window.location = "error.html"
</script>';
}
}
else
{
//Programar aquí alguna acción para indicarle al usuario que la validación del captcha fue incorrecta
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
}
?>
AUN CON TODO ESTO MANDA CORREOS EN BLANCO Votos: -1 - Respuestas: 3 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
¿Cómo combatir bot en formulario?[No resuelta]
Hola a todos, tengo un problema en el cual ya llevo varios días tratando de solucionarlo. Tenemos un sitio que solo tiene "como programación" formularios de contacto y el correo esta llegando en blanco, sin embargo tengo validación con jQuery.validation, tengo recaptcha, el php que recibe las variables de formulario tengo trim y valido si están vacías, pero aun con esto sigo recibiendo correos en blanco. No se como combatirlo.El código del formulario es:
<form class="form fw-row fo3" id="fo3" action="lead.php" method="post">
<div class="fw-col-sm-6 fw-col-md-6">
<input name="name" id="name" type="text" placeholder="Nombre *" class="style1 frmname">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="country" id="country" type="text" placeholder="País *" class="style1 frmcountry">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="phone" id="phone" type="text" placeholder="Número de teléfono *" class="style1 frmphone">
</div>
<div class="fw-col-sm-6 fw-col-md-6">
<input name="email" id="email" type="text" placeholder="Correo electrónico *" class="style1 frmemail">
</div>
<div class="fw-col-sm-12 fw-col-md-12">
<select name="procedure" id="procedure" class="style1 procedure">
<option>Procedimiento</option>
<option value="Cirugia Nariz">Cirugía de Nariz</option>
<option value="Trasplante Capilar">Trasplante Capilar</option>
<option value="Liposuccion">Liposucción</option>
<option value="Pecho">Pecho</option>
<option value="Estiramiento Facial">Estiramiento Facial</option>
</select>
</div>
<div class="fw-col-md-12">
<div class="tac">
<div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxxxxxxxx"></div>
</div>
</div>
<div class="fw-col-md-12">
<div class="tac">
<input type="hidden" name="seccion" value="Inicio">
<button type="submit" class="button-style1 blue btnsubmit"><span>Más información</span></button>
</div>
</div>
</form>
Código del php que recibe los datos de formulario
<?
header("Content-Type: text/html;charset=utf-8");
require "classes/class.phpmailer.php";
require('class.conexion.php');
require_once ('recaptchalib.php');
// Limpio las variables recibidas:
$_POST['name'] = trim($_POST['name']);
$_POST['country'] = trim($_POST['country']);
$_POST['email'] = trim($_POST['email']);
$_POST['phone'] = trim($_POST['phone']);
$_POST['procedure'] = trim($_POST['procedure']);
$_POST['seccion'] = trim($_POST['seccion']);
$nombrelead = $_POST['name'];
$pais = $_POST['country'];
$email = $_POST['email'];
$telefono = $_POST['phone'];
$procedimiento = $_POST['procedure'];
$seccion = $_POST['seccion'];
//Verifico si vienen vacias, si es así regreso a la sección anterior
if (empty($nombrelead)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
} elseif (empty($pais)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
} elseif (empty($email)) {
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
}
$fecha=date("d/m/Y");
$hora=date("g:i a");
$idioma='1';
$comentarios = '-';
//Validación de recapathcha
//Asignas la clave secreta del paso 4 a una variable llamada $claveSecreta
$claveSecreta = "xxxxxxxxxxx";
// Por default asumimos que tenemos una respuesta vacía
$respuesta = null;
//Creamos una instancia de la clase que incluimos
$captcha = new ReCaptcha($claveSecreta );
//Validamos que si hayamos recibido por post la respuesta que recibimos de google al validar el captcha
if ($_POST["g-recaptcha-response"])
{
//Le pedimos a google que valide la respuesta del captcha; para
//ello enviamos nuestro dominio y la respuesta
$respuesta = $captcha ->verifyResponse
(
"www.drpiletti.com",
$_POST["g-recaptcha-response"]
);
}
//Si la respuesta que obtenemos de la comprobación es diferente a null y además es exitosa...
//...listo! todo está en orden y entonces podemos enviar el correo electrónico
if ($respuesta != null && $respuesta ->success) {
$conexion = new mysqli($host_db, $user_db, $pass_db, $db_name);
if ($conexion->connect_error) {
die("La conexion falló: " . $conexion->connect_error);
}
//insertamos en la base de datos el registro del usuario
$sql = "INSERT INTO
usuarios_formulario (nombre,email,telefono,pais,procedimiento,comentarios,idioma,fecha,horario)
VALUES
('$nombrelead','$email','$telefono','$pais','$procedimiento','$comentarios','$idioma','$fecha','$hora')
";
if ($conexion->query($sql) === TRUE) {
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsHTML(true);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = 'mail.drpiletti.com'; // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = 'info@drpiletti.com'; // SMTP account username
$mail->Password = 'xxxxxxx'; // SMTP account password
$mail->AddAddress($email, $nombrelead);
$mail->SetFrom('info@drpiletti.com', 'LEAD Dr. Piletti');
$mail->AddBCC('joseseocancun@gmail.com', 'Jose Romero');
$mail->AddBCC('jea.cancun@gmail.com', 'Fco Guzman');
$mail->Subject = 'Lead Web Dr. Piletti idioma esp';
$mail->Body="
<html>
<head>
<title>Correo de Solicitud de información</title>
</head>
<body>
<table style='width: 780px; margin: 0 auto;'>
<tr>
<th style='text-align: center;'>
<h2> Solicitud de información en www.drpiletti.com </h2>
</th>
</tr>
<tr>
<th style='text-align: center;'>
<p>Gracias por contactarnos, en breve nuestro asesor se pondrá en contacto con usted. El presente correo es un resumen de los datos que nos proporciono. Si alguno de ellos es incorrecto, por favor, envienos un correo a info@drpiletti.com </p>
</th>
</tr>
<tr>
<td style='width: 100%; padding-right: 6px;'>
<table style='width: 100%;'>
<th colspan='2' style='background:#bf0411; text-align: center; padding: 10px 0px;'>
<span style='color:#fff; font-weight:400;'>DATOS PERSONALES</span>
</th>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Nombre : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($nombrelead)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Pais : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($pais)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Correo : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($email)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Teléfono : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($telefono)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Procedimiento : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($procedimiento)."</td>
</tr>
<tr>
<td style='padding: 5px 0px;'><span style='font-weight: bolder;'>Sección : </span></td>
<td style='padding: 5px 0px;'>".utf8_decode($seccion)."</td>
</tr
</table>
</td>
</tr>
</table>
</body>
</html>
";
if(!$mail->Send()){
echo "Error sending: " . $mail->ErrorInfo;
echo '<script type="text/javascript">
window.location = "error.html"
</script>';
}
else{
echo '<script type="text/javascript">
window.location = "gracias.html"
</script>';
}
}
else {
//echo "Error al ingresar visita" . $query . "<br>" . $conexion->error;
echo '<script type="text/javascript">
window.location = "error.html"
</script>';
}
}
else
{
//Programar aquí alguna acción para indicarle al usuario que la validación del captcha fue incorrecta
echo "<script type='text/javascript'>";
echo "window.history.back(-1)";
echo "</script>";
}
?>
AUN CON TODO ESTO MANDA CORREOS EN BLANCO Votos: -1 - Respuestas: 3 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 08-11-2017 15:36:07 Hola Juan
Primero te sugiero que edites tu pregunta, a los códigos ponlos entre los tags correspondiente a cada codigo usando los botones de abajo Code PHP, Code HTML, etc así se formatea y es más legible y entendible para quien lo lea.
Ahora yendo a tu pregunta lee este link de un tema debatido en la comunidad Evitar ataques CSRF en Formularios (Debate) es posible que te sea útil para evitar el envío de datos por medio de bots.
Todas las validaciones SIEMPRE hay que realizarla desde el lado del servidor, es decir con PHP.
Saludos Votos: 2 - Link respuesta -
Fecha: 08-11-2017 15:38:59 Hola
Aplica esta funcion para evitar los valores no seguros provenientes de tu formulario, real_escape necesita que la conexion a la base de datos ya exista. Una pregunta las filas correspondientes a los emails en blanco como se ven en tu tabla : "usuarios_formulario" ?
function filter($data) { $data = trim(htmlentities(strip_tags($data))); if (get_magic_quotes_gpc()) $data = stripslashes($data); $data = $conexion->real_escape($data); return $data; } $nombrelead = filter($_POST['name']);
Espero que con esto se solucione tu problema en el formulario, sino mandame un mp y nos ponemos en contacto para ayudarte a resolverlo.
Saludos cordiales,
Raul Votos: 0 - Link respuesta -
Fecha: 09-11-2017 07:09:57 El código que compartiste no está formateado y no se entiende bien. Edítalo de nuevo para que se vea ordenado.
Lo que te puedo sugerir es que utilices un captcha y agregues un hash para evitar CSRF. Votos: 1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
