Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Como validar formulario con recaptcha v2 de google

En esta ocasión os traigo un manual de como implementar la validación de formularios con recaptcha v2 de google con php, este tipo de verificación se hacer para comprobar que el envío del formulario no lo hace un bot y de esa manera proteger nuestro sistema de envíos o inserciones masivas no deseadas.

Después de estar un rato dándole vueltas eh decidido hacer el proceso con file_get_contents y no con recaptchalib.php de esta manera nos ahorramos tener que utilizar librerías externas y conseguimos la misma función usando un poco de php.

Utilizamos la función file_get_contents de php para obtener la respuesta del recaptcha y poder determinar si a sido resuelto con éxito o no, recordar que este sistema de recaptcha suele funcionar en remoto es decir, si lo estáis implementando en vuestro localhost lo mas normal es que tengáis que subirlo a remoto para probarlo.

Vamos con los pasos..

1 Crear una cuenta de recaptcha v2 (es gratis)
Visita este enlace y crea tu recaptcha https://www.google.com/recaptcha/intro/invisible.html

Recuerda agregar el dominio o los dominios donde vas a usar el recaptcha

2 Busca el apartado de claves y encontraras las clave del sitio y la clave secreta

estas claves son necesarias para implementar el recaptcha

3 Agrega el campo recaptcha a tu formulario con tu clave del sitio
<script src='https://www.google.com/recaptcha/api.js'></script>

<form action="" method="post">
  
<div class="g-recaptcha" data-sitekey="Tu____clave_____del___sitio"></div>
  
  <input type="text" name="nombre">

  <input type="submit" value="Enviar">
</form>
si lo has echo todo bien tendrás algo como esto

y cuando hagas clic te aparecerá algo como esto


4 Ahora la validación mediante php con tu clave secreta
<?php 

if(isset($_POST['g-recaptcha-response'])){

//La respuesta del recaptcha
$respuesta=$_POST['g-recaptcha-response'];
//La ip del usuario
$ipuser=$_SERVER['REMOTE_ADDR'];
//Tu clave secretra de recaptcha
$clavesecreta='Tu____clave_____secreta';
//La url preparada para enviar
$urlrecaptcha="https://www.google.com/recaptcha/api/siteverify?secret=$clavesecreta&response=$respuesta&remoteip=$ipuser";

//Leemos la respuesta (suele funcionar solo en remoto)
$respuesta = file_get_contents($urlrecaptcha) ;

//Comprobamos el success
$dividir=explode('"success":',$respuesta);
$obtener=explode(',',$dividir[1]);

//Obtenemos el estado
$estado=trim($obtener[0]);


if ($estado=='true'){
  //Si es ok
  echo '-> Ok';
} else if ($estado=='false'){
  //Si es error
  echo '-> Error';
}

}

?>
como podemos ver todo el código del apartado 4 tiene sus comentarios correspondientes para saber como funciona cada fragmento

Demo

eso es todo, si te a gustado la guía o tienes algún problema deja tu coment ;)
salu2
3
Puntos
11002
Visitas
1
Resp
Por alber hace 85 meses
Administrador
Respuesta #1
hola!... me sirvió mucho tu código....ahora tengo una duda...Como hago para enviar los datos del formulario por el método post?

0
Puntos
Por emilia_1 hace 25 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate