Foros del Web » Creando para Internet » HTML »

Recaptcha en formulario html

Estas en el tema de Recaptcha en formulario html en el foro de HTML en Foros del Web. Hola a todos. No tengo mucha experiencia en programacion y he puesto un captcha en el formulario contacto, que contiene campos spry y le he ...
  #1 (permalink)  
Antiguo 12/01/2015, 19:36
 
Fecha de Ingreso: enero-2015
Ubicación: Estados Unidos
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Recaptcha en formulario html

Hola a todos.

No tengo mucha experiencia en programacion y he puesto un captcha en el formulario contacto, que contiene campos spry y le he adicionado el recaptcha de google, pero aunque se validanlos campos del formulario, me envia el formulario sin validar el recaptcha. Llevo mucho tiempo intentando ponerlo a funcionar, pero ya no se que mas hacer .

Agradezco de antemano el apoyo de quien quiera colaborarme.

El nombre del sitio: http://www.lineaastrologica.com
  #2 (permalink)  
Antiguo 12/01/2015, 20:09
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: Recaptcha en formulario html

El code y las instrucciones de tu recaptcha son muy simples. Colocaste el code correctamente?...... tal vez si lo pegas podríamos ayudarte un poco mejor.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #3 (permalink)  
Antiguo 12/01/2015, 20:30
 
Fecha de Ingreso: enero-2015
Ubicación: Estados Unidos
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Recaptcha en formulario html

Gracias luser por tu interes en colaborarme.

Este es el formulario de contacto


<!-- end .menu -->

<div id="derecho"> <br />
<form action="enviar.php" method="post" name="f1" id="f1">
<input type="hidden" name="email"/>

<?php
require_once('recaptchalib.php');
$publickey = "6LeVXf8SAAAAALKSbYWfuin8QCvG8YivxJUp-kHr";
$privatekey = "6LeVXf8SAAAAAP9....................... ";
$resp = null;
$error = null;

if ($_POST["recaptcha_response_field"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
echo "Envia el formulario";
} else {

$error = $resp->error;
echo "Has escrito el codigo errado";
echo recaptcha_get_html($publickey, $error);
}
}


<fieldset>

<h3 class="centrartituloenform">Contacto</h3>
<div id ="sprytextfield1">
<label for="nombre">Nombre </label>
<input name="nombre" type="text" id="nombre" size="30" maxlength="30" />
<div class="textfieldRequiredMsg">Requerido.</div>
</div>
<div id = "sprytextfield2" >
<label for="email1">Correo Electrónico</label>
<input type="text" name="email1" id="email1" size="30" maxlength="30"/>
<div class="textfieldRequiredMsg">Requerido.</div>
<div class="textfieldInvalidFormatMsg">Formato invalido.</div>
</div>
<div id="spryconfirm1">
<label for="email2">Repita Correo Electrónico</label>
<input type="text" name="email2" id="email2" size="30" maxlength="30" />
<div class="confirmRequiredMsg">Requerido</div>
<div class="confirmInvalidMsg">Los correos no coinciden</div>
</div>
<div id="sprytextfield3">
<label for="pais">País</label>
<input type="text" name="pais" id="pais" size="30" maxlength="30" />
<div class="textfieldRequiredMsg">Requerido.</div>
</div>
<div id="spryselect1">
<label for="asunto">Asunto</label>
<select name="asunto" id="asunto" >
<option value="">Elija</option>
<option value="cartanino">Carta Niño</option>
<option value="cartaadulto">Carta Adulto</option>
<option value="revsolar">Revolución Solar</option>
<option value="ajustehora">Ajuste de la Hora</option>
<option value="formulario">Formulario</option>
<option value="precio">Precio</option>
<option value="otro">Otro</option>
</select>
<div class="selectRequiredMsg">Seleccione el asunto.</div>
</div>
<div align="center" id="sprytextarea1">
<label for="mensaje"></label>
<textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
<span id="countsprytextarea1">&nbsp;</span>
<div class="textareaRequiredMsg">Escriba su Mensaje.</div>
<div class="textareaMaxCharsMsg">Excedio el maximo de caracteres.</div>
</div>
<div class="g-recaptcha" data-sitekey="6LeVXf8SAAAAALKSbYWfuin8QCvG8YivxJUp-kHr"></div>


<div align="center">

<input type="submit" name="submit" value="Enviar"/>
&nbsp;&nbsp;
<input type="reset" name="submit" value="Borrar"/>
</div>

</fieldset>

</form>
</div>
<!-- end .derecho -->

Y este es el archivo para enviar el formulario

<?php

error_reporting(E_ALL);
ini_set('display_errors', true);

$nombre = $_POST['nombre'];
$mail = $_POST['email1'];
$pais = $_POST['pais'];
$asunto = $_POST['asunto'];
$thank="gracias_contac.html";

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";


$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje = "Escribo desde: " . $pais . "\r\n";
$mensaje .= "Mi e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "IP: " . $_SERVER["REMOTE_ADDR"] . " \r\n";
$mensaje .= "Enviado el: " . date('d/m/Y', time());

$para = '[email protected]' . ', ';
$para .= 'mailito:[email protected]';


if (mail($para, $asunto, utf8_decode($mensaje), $header))Header("Location: $thank");
else {
echo "Fallo el envío";
echo error_reporting(E_ALL);
}
?>
  #4 (permalink)  
Antiguo 12/01/2015, 20:52
 
Fecha de Ingreso: enero-2015
Ubicación: Estados Unidos
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Recaptcha en formulario html

Lauser no se porque no apareció el cierre de php ?>. Por eso te lo reenvio nuevamente tal como está escrito:

Antes del cierre del </head> tengo este script:

<script src='https://www.google.com/recaptcha/api.js'></script>

Y aquí nuevamente el código del formulario:

<!-- end .menu -->

<div id="derecho"> <br />

<form action="enviar.php" method="post" name="f1" id="f1">
<input type="hidden" name="email"/>

<?php
require_once('recaptchalib.php');
$publickey = "6LeVXf8SAAAAALKSbYWfuin8QCvG8YivxJUp-kHr";
$privatekey = "6LeVXf8SAAAAAP98................................. .... ";
$resp = null;
$error = null;

if ($_POST["recaptcha_response_field"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if ($resp->is_valid) {
echo "Envia el formulario";
} else {

$error = $resp->error;
echo "Has escrito el codigo errado";
echo recaptcha_get_html($publickey, $error);
}
}
?>
<fieldset>
<h3 class="centrartituloenform">Contacto</h3>
<div id ="sprytextfield1">
<label for="nombre">Nombre </label>
<input name="nombre" type="text" id="nombre" size="30" maxlength="30" />
<div class="textfieldRequiredMsg">Requerido.</div>
</div>
<div id = "sprytextfield2" >
<label for="email1">Correo Electrónico</label>
<input type="text" name="email1" id="email1" size="30" maxlength="30"/>
<div class="textfieldRequiredMsg">Requerido.</div>
<div class="textfieldInvalidFormatMsg">Formato invalido.</div>
</div>
<div id="spryconfirm1">
<label for="email2">Repita Correo Electrónico</label>
<input type="text" name="email2" id="email2" size="30" maxlength="30" />
<div class="confirmRequiredMsg">Requerido</div>
<div class="confirmInvalidMsg">Los correos no coinciden</div>
</div>
<div id="sprytextfield3">
<label for="pais">País</label>
<input type="text" name="pais" id="pais" size="30" maxlength="30" />
<div class="textfieldRequiredMsg">Requerido.</div>
</div>
<div id="spryselect1">
<label for="asunto">Asunto</label>
<select name="asunto" id="asunto" >
<option value="">Elija</option>
<option value="cartanino">Carta Niño</option>
<option value="cartaadulto">Carta Adulto</option>
<option value="revsolar">Revolución Solar</option>
<option value="ajustehora">Ajuste de la Hora</option>
<option value="formulario">Formulario</option>
<option value="precio">Precio</option>
<option value="otro">Otro</option>
</select>
<div class="selectRequiredMsg">Seleccione el asunto.</div>
</div>
<div align="center" id="sprytextarea1">
<label for="mensaje"></label>
<textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
<span id="countsprytextarea1">&nbsp;</span>
<div class="textareaRequiredMsg">Escriba su Mensaje.</div>
<div class="textareaMaxCharsMsg">Excedio el maximo de caracteres.</div>
</div>

<div class="g-recaptcha" data-sitekey="6LeVXf8SAAAAALKSbYWfuin8QCvG8YivxJUp-kHr"></div>

<div align="center">
<input type="submit" name="submit" value="Enviar"/>
&nbsp;&nbsp;
<input type="reset" name="submit" value="Borrar"/>
</div>
</fieldset>
</form>
</div>
<!-- end .derecho -->
  #5 (permalink)  
Antiguo 15/01/2015, 08:02
Avatar de ramonjosegn  
Fecha de Ingreso: agosto-2011
Ubicación: Colombia
Mensajes: 651
Antigüedad: 12 años, 8 meses
Puntos: 40
Respuesta: Recaptcha en formulario html

Asegúrate de haber copiado correctamente el código de re-captcha que utiliza google. No lo he visto en bruto pero algunos sitios web en wordpress ya lo están usando mediante plugins programados para tal fin y estoy seguro de que está funcionando correctamente.
  #6 (permalink)  
Antiguo 15/01/2015, 11:33
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: Recaptcha en formulario html

Cita:
<?php
require_once('recaptchalib.php');
$publickey = "6LeVXf8SAAAAALKSbYWfuin8QCvG8YivxJUp-kHr";
$privatekey = "6LeVXf8SAAAAAP9....................... ";
No entiendo que hace ese publickey, si ya lo tienes en el div, que es donde tiene que ir. Se me ocurre que este form con recapcha es un modulo de algún cms, puede ser?. Tampoco veo el recaptchalib.php, pero presupongo que lo tienes.....
Lo correcto seria asi:
recaptchalib.php
Código PHP:
Ver original
  1. &lt;form method="post" action="formulario.php"&gt;
  2. &lt;?php
  3. // descomentar la linea de abajo si tenemos el codigo de validacion en otro archivo
  4. // require_once('recaptchalib.php');
  5. $publickey = "tu public key";
  6. echo recaptcha_get_html($publickey, $error);
  7. ?&gt;&lt;
  8. &lt;input type="submit" /&gt;
  9. &lt;/form&gt;

formulario.php
Código PHP:
Ver original
  1. require_once('recaptchalib.php');
  2. $privatekey = "tu private key";
  3. $resp = null;
  4. $error = null;
  5. if ($_POST["recaptcha_response_field"]) {
  6. $resp = recaptcha_check_answer  $privatekey,
  7. $_SERVER["REMOTE_ADDR"],
  8. $_POST["recaptcha_challenge_field"],
  9. $_POST["recaptcha_response_field"]);
  10. if ($resp-&gt;is_valid) {
  11. // CODIGO A EJECUTAR SI EL RECAPTCHA VALIDA
  12. } else {
  13. // RECAPTCHA NO VALIDA IMPRIME ERROR
  14. die ("El codigo reCAPTCHA no es correcto, inténtelo de nuevo");
  15. }
  16. }
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #7 (permalink)  
Antiguo 15/01/2015, 23:00
 
Fecha de Ingreso: enero-2015
Ubicación: Estados Unidos
Mensajes: 4
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Recaptcha en formulario html

Lauser aprecio muchísimo el tiempo que ha tomado para darme una posible solución.

La razón por la cual repito la clave pública es porque, me baso en las instrucciones que da google para el funcionamiento del captcha. De todas maneras retire el codigo de la clave publica y segui tus instrucciones pero no funcionó.

El recaptchalib.php ya lo tengo integrado al directorio del sitio. Este es proporcionado tambien por google.


Algo que olvide mencionar en la anterior consulta, es que parte del codigo que da respuesta al captcha aparece en el formulario de contacto o de orden que el cliente debe llenar, como si este fuera un parrafo. Ese mismo codigo cambia totalmente a color negro dentro de la pagina contacto.html, que es la que contiene el formulario y el codigo php del captcha. He revisado la sintaxis de este codigo pero no encuentro tampoco el error.

Este codigo es:

is_valid) { echo "Correcto}
else { $error = $resp->error;
}
}
echo recaptcha_get_html($publickey, $error);
?>

Última edición por luxxia; 15/01/2015 a las 23:03 Razón: colocar comas que definen mejor la lectura del contenido

Etiquetas: formulario, php, recaptcha, spry
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.