Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/11/2016, 03:21
Juanjo87
 
Fecha de Ingreso: enero-2016
Mensajes: 19
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: como validar reCaptcha en custom un form?

Código PHP:
<form id="contact-form" name="contact-form" action="<?php echo get_permalink();?>#contact-form" method="post">
  <?php //Comprobamos si el formulario ha sido enviado
  
if (isset( $_POST['btn-submit'] )) {
    
//Creamos una variable para almacenar los errores
    
global $reg_errors;
    
$reg_errors = new WP_Error;
 
    
//Recogemos en variables los datos enviados en el formulario y los sanitizamos.
    //Si detectamos algún error, podremos más abajo rellenar los campos del formulario con los datos enviados para no tener que empezar el formulario de cero
    
$f_name sanitize_text_field($_POST['f_name']);
 
    
//El campo Nombre es obligatorio, comprobamos que no esté vacío y en caso contrario creamos un registro de error
    
if ( empty( $f_name ) ) {
      
$reg_errors->add("empty-name""El campo nombre es obligatorio");
    }
    
//Comprobamos el recaptcha
    
$response wp_remote_post"https://www.google.com/recaptcha/api/siteverify", array(
      
'method' => 'POST',
      
'timeout' => 45,
      
'redirection' => 5,
      
'httpversion' => '1.0',
      
'blocking' => true,
      
'headers' => array(),
      
'body' => array(
        
'secret' => "tu-clave-secreta",
        
'response' => esc_attr($_POST['g-recaptcha-response'])),
      
'cookies' => array()
      )
    );
 
    
//Comprobamos si tenemos algún tipo de error en la conexión con google
    
if ( is_wp_error$response ) ) {
      
$reg_errors->add"invalid-captcha""Se ha producido un error comprobando el captcha" );
    } else {
      
//Si hemos conectado correctamente con google, comprobamos si la respuesta es true o false
      
$g_response json_decode($response["body"]);
      if (
$g_response->success == false) {
        
$reg_errors->add"invalid-captcha""Se ha producido un error comprobando el captcha" );
      }
    }
  }
?>
 
  <div class="form-group">
    <label for="f_name">Nombre <span class="asterisk">*</span></label>
    <input type="text" id="f_name" name="f_name" class="form-control" value="<?php echo $f_name;?>" placeholder="Introduce tu nombre" required aria-required="true">
 
    <?php //Comprobamos si hay errores en la validación del campo Nombre
    
if ( is_wp_error$reg_errors ) ) {
      if (
$reg_errors->get_error_message("empty-name")) {?>
      <br class="clearfix" />
      <div class="alert alert-danger alert-dismissable">
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
        <p><?php echo $reg_errors->get_error_message("empty-name");?></p>
      </div>
      <?php }
    }
?>
  </div>
 
  <div class="form-group">
    <div class="g-recaptcha" data-sitekey="tu-clave-del-stio"></div>
  </div>
 
  <button type="submit" id="btn-submit" name="btn-submit" class="btn btn-default">Enviar consulta</button>
</form>
De esta forma se puede validar, según he leído, pero no se como adaptarlo a mi código, me ayuda alguien?