Foros del Web » Programando para Internet » PHP »

validacion de captcha (php)

Estas en el tema de validacion de captcha (php) en el foro de PHP en Foros del Web. Hola amigos gusto de saludarlos, queria ver si alguien me hecha una ayudadita, necesito validar el reCAPTCHA de google (el de no soy robot y ...
  #1 (permalink)  
Antiguo 08/12/2015, 16:26
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 13 años, 4 meses
Puntos: 1
validacion de captcha (php)

Hola amigos gusto de saludarlos, queria ver si alguien me hecha una ayudadita, necesito validar el reCAPTCHA de google (el de no soy robot y que hace seleccionar imagenes) con el codigo que tengo me llega bien al email, pero creo que no esta funcionando la validacion porque intente enviar el formulario sin seleccionar el captcha y lo envia igual, o sea no me muestra nada si envio el form sin seleccionar el captcha cuando lo logico es que si el captcha no es valido me muestre un mensaje o algo y no envie el formulario...

Mi codigo php que uso para procesar el form es este:

Código PHP:
<?php

//reCAPTCHA GOOGLE
require_once '../script/ReCaptcha/ReCaptcha.php';
require_once 
'../script/ReCaptcha/RequestMethod.php';
require_once 
'../script/ReCaptcha/RequestParameters.php';
require_once 
'../script/ReCaptcha/Response.php';
require_once 
'../script/ReCaptcha/RequestMethod/Curl.php';
require_once 
'../script/ReCaptcha/RequestMethod/CurlPost.php';
require_once 
'../script/ReCaptcha/RequestMethod/Post.php';
require_once 
'../script/ReCaptcha/RequestMethod/Socket.php';
require_once 
'../script/ReCaptcha/RequestMethod/SocketPost.php';



if(
$_POST['Enviar']){
    
$nombre=$_POST["nombre"]; //Input Nombre
    
$apellido=$_POST["apellido"]; //input apellido
    
$telefono=$_POST["fono"]; // input fono
    
$direccion=$_POST["direccion"]; // input direccion
    
$correo=$_POST["email"]; // input direccion
    
$asunto=$_POST["asunto"]; // select asunto
    
$contenido=$_POST["comentario"]; //textarea mensaje
    
$recaptcha = new ReCaptchaReCaptcha("6Ld58P4SAAAAAC9pu3NFIKz9Lc8JVfqn0SfvEclq");
    
$respuesta $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    if(
$respuesta->isSuccess()){
       
//si esta ok post, Recogemos las variables desde el formulario
        
        
        //Validamos que no hay campos vacios
        
if(empty($_POST["nombre"])){
            echo 
"Debe Ingresar su Nombre";
        } else if (empty(
$_POST["apellido"])){
            echo 
"Debe Ingresar su Apellido";
        } else if(empty(
$_POST["fono"])){
            echo 
"Debe Ingresar Telefono";
        } else if(empty(
$_POST["direccion"])){
            echo 
"Debe Ingresar su Dirección";
        } else if(empty(
$_POST["email"])){
            echo 
"No ha ingresado email";
        } else if (empty(
$_POST["asunto"])){
            echo 
"Debe Seleccionar Asunto";
        } else if (empty(
$_POST["mensaje"])){
            echo 
"Debe Escribir su Mensaje/Consulta";
        } else{
            
//Si pasó validaciones ejecutar la funcion enviar_correo
            
envia_correo();
        }
       exit;
    }else{
       echo 
'No ha seleccionado el Captcha de Seguridad';
       foreach (
$respuesta->getErrorCodes() as $error_code) {
           echo 
'<tt>' $error_code '</tt> ';
       }
       exit;
    }
}

function 
envia_correo(){
    
    
//Variables
    
$correo_destino='[email protected]'//Correo al que se enviara el formulario
    
$nombre=$_POST["nombre"]; //Input Nombre
    
$apellido=$_POST["apellido"]; //input apellido
    
$telefono=$_POST["fono"]; // input fono
    
$direccion=$_POST["direccion"]; // input direccion
    
$correo=$_POST["email"]; // input direccion
    
$asunto=$_POST["asunto"]; // select asunto
    
$contenido=$_POST["comentario"]; //textarea mensaje
    
    //Creacion de Mensaje a enviar al Email
    
$mensaje="
        Mensaje enviado desde Formulario de Contacto Web Dekoplus:
        
        Asunto del Mensaje: $asunto 
        
        Enviado por: $nombre $apellido
        
        Telefono: $telefono
        
        Dirección: $correo
        
        Dirección: $direccion
        
        Mensaje: $contenido 
    "
;
    
    
//Confirmación de Envio
    
if(mail($correo_destino,"Formulario Contacto Dekoplus","$mensaje")){
                
//si se cumple
                
echo "<div class='alert alert-success alert-dismissable'>
                      <button type='button' class='close' data-dismiss='alert'>&times;</button>
                      <p class='principal'><strong>¡GRACIAS POR CONTACTARNOS!</strong>
                      Su mensaje ha sido enviado con exito..Le responderemos a la brevedad posible.</p>
                      </div>"
;
                      
//Redireccionamos al index            
            
}else{
                
//si falla el envio
                
echo "<div class='alert alert-danger alert-dismissable'>
                      <button type='button' class='close' data-dismiss='alert'>&times;</button>
                      <p class='principal'><strong>ERROR:</strong>
                      No hemos Podido Enviar Su Mensaje..Intente mas tarde.</p>
                      </div>"
;
            }
    
}

?>
y el .js que uso para validar los campos es este:
Código:
/*===
Validacion Formulario Contacto
===*/
    $("#formulario_contacto").validate({
	/*Declaramos las reglas de validacion
		*Reglas: 
		*required:true -> Campo Requerido
		*maxlength:2 -> Maximo de Caracteres (Se debe crear el mensaje en 'messages')
		*minlength:2 -> Minimo de Caracteres (Se debe crear el mensaje en 'messages')
		*
		*/
	debug: false,
	rules:{
			nombre:{required:true},//validacion para el input nombre
            apellido:{required:true},
			fono:{required:true},//validacion para el input telefono
            direccion:{required:true},//validacion para el input direccion
			email:{required:true, email:true},//validacion para el input email
			asunto:{required:true},//validacion para el Select Asunto
			comentario:{required:true},//validacion para el input comentario
			
		},

        messages:{
			nombre:{ required:"Debe Ingresar su Nombre"},//Mensaje para el input nombre
            apellido:{required:"Debe ingresar su Apellido"},
			fono:{ required:"Debe Ingresar Numero Telefonico"},//Mensaje para el input Telefono
            direccion: {required:"Debe ingresar su dirección"},
			email:{ required:"Debe Ingresar Email", email:"Email no Valido"},//Mensaje para el input email
			asunto:{ required:"Debe Seleccionar Asunto"},//Mensaje para el Select Asunto
			comentario:{ required:"Debe Ingresar Comentario o Consulta"},//Mensaje para el input comentario
			
		},

submitHandler: function(form) {
// do other stuff for a valid form
$.post('../script/formContacto.php', $("#formulario_contacto").serialize(), 
function(data) {
	
$('#resultado').html(data);
$('#resultado').fadeOut(10000); /*CIERRE AUTOMATICO DE VENTANA*/

});
$("#formulario_contacto")[0].reset(); //Resetea el Formulario
}
        
        
    });
  #2 (permalink)  
Antiguo 09/12/2015, 09:20
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: validacion de captcha (php)

Saludo.
Tal vez esto sirva.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: captcha, formulario, html, select, validacion, variable
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 20:12.