joelbr Posted August 10, 2016 Share Posted August 10, 2016 (edited) Buenas a todos, quisiera saber en qué archivo y en qué linea debo meterme para poder añadir el re-captcha de google al formulario de contacto de mi prestashop (y como hacer que lo valide también..).He estado buscando y solo encuentro algunos tips para versiones viejas, y lo de cobrar un módulo de 50€ para algo que google te da gratis me parece poco ético.Gracias de antemano! Edited September 30, 2016 by joelbr (see edit history) Link to comment Share on other sites More sharing options...
joelbr Posted August 10, 2016 Author Share Posted August 10, 2016 (edited) he metido el recaptcha a palo seco dentro de contact-form.tpl.Lo único que me hace falta ahora es que valide antes de enviar... Según documentación de Google, se usa un verify.php para verificar el captcha y si es valido hacer lo k sea con el form. En vez de eso para no dar tantas vueltas, habría que poner el código que comprueba si el captcha es válido antes de hacer lo que sea que haga prestashop con los datos que le llegan por post. He mirado en contactController.php, donde hay funciones varias metidas en una clase, pero no veo ninguna acción del formulario (o no la he sabido ver),en contact-form.tpl, veo esto <form action="{$request_uri}" method="post" class="contact-form-box" enctype="multipart/form-data">pero no se a qué hace referéncia {$request_uri}. Se supone que una vez localizado dónde hace el action, metiéndole la validación al revés de como la tiene google, mirando si está mal ( if ! ({validacion}) echo "error captcha"; else { todo lo demás hasta el final } ya debería de funcionar de mil maravillas. Alguien puede echarme un cable con esto? Edited August 11, 2016 by joelbr (see edit history) Link to comment Share on other sites More sharing options...
joelbr Posted August 11, 2016 Author Share Posted August 11, 2016 Vale, ya está todo solucionado, se añade simplemente la api del recaptcha arribad el todo del formulario de contacto, luego antes del submit se harcodea el div del captcha y en la validacion se pone un caso más dentro de la primera funcion de contactController y listos. Link to comment Share on other sites More sharing options...
pallman Posted September 28, 2016 Share Posted September 28, 2016 (edited) Hola, podrías explicarlo para que una persona tan torpe como yo lo sepa hacer, Y para ponerlo en el registro? gracias.. Edited September 28, 2016 by pallman (see edit history) Link to comment Share on other sites More sharing options...
joelbr Posted September 28, 2016 Author Share Posted September 28, 2016 SI, no hay problema, aquí encontré a posteriori un blog de un señor que lo explica de una forma genial! http://ivanros.com/2015/01/integrar-un-captcha-en-prestashop-1-6/ Un saludo 1 Link to comment Share on other sites More sharing options...
pallman Posted September 28, 2016 Share Posted September 28, 2016 Muchas gracias, me pongo con ello. Saludos. Link to comment Share on other sites More sharing options...
henrymto Posted October 10, 2016 Share Posted October 10, 2016 Hola a todos. He visto tuto sobre recaptcha para formulario contacto en prestashop pero no para el formulario de registro de nuevo usuario. Alguien por favor podria darme una manito con eso. Me sera de mucha ayuda. Saludos! Link to comment Share on other sites More sharing options...
oalija Posted February 12, 2018 Share Posted February 12, 2018 El front controller que propone en ese sitio es invasivo al replicar parte del codigo y ademas no valida realmente el captcha en override/controllers/front/FrontController.php debiera haber algo así, sin olvidarse de reemplazar su clave secreata donde dice "TU CODIGO AQUI" <?php class ContactController extends ContactControllerCore { public function postProcess() { if (Tools::isSubmit('submitMessage')) { if (Tools::getIsset('g-recaptcha-response') && !$this->validateCaptcha()){ $this->errors[] = Tools::displayError('Captcha no verificado'); array_unique($this->errors); }else{ parent::postProcess(); } } } private function validateCaptcha(){ $post_data = http_build_query( array( 'secret' => "TU CODIGO AQUI", 'response' => Tools::getValue('g-recaptcha-response'), 'remoteip' => $_SERVER['REMOTE_ADDR'] ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $post_data ) ); $context = stream_context_create($opts); $response = file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context); $result = json_decode($response); if (!$result->success) { return false; } return true; } } Link to comment Share on other sites More sharing options...
Ghacko Posted February 20, 2018 Share Posted February 20, 2018 Estaba buscando como hacerlo para PrestaShop 1.6.1.9 Básicamente es la solución propuesta por oalija , pero en otro archivo : override/controllers/front/ContactController.php Sencillo, rápido y funciona perfectamente. Muchas gracias. Recordad eliminar el archivo del servidor /cache/class_index.php para que cargue el override. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted February 26, 2018 Share Posted February 26, 2018 1 hour ago, gera1900 said: alguna solucion para prestashop 1..6.1.10 ????? gracias Creo que el módulo hernes tiene una versión para PS 1.6: https://github.com/nenes25/eicaptcha/releases del que hizo una reseña para PS 1.7 @nadie aquí: https://victor-rodenas.com/2018/01/18/captcha-para-prestashop-1-7/ Además si tienes la 1.6.1.10 y no has actualizado minimo a la 1.6.1.17, es recomendable aplicar estos parches que indica @nadie: https://victor-rodenas.com/2018/02/21/se-estan-colando-rusos-o-chinos-por-el-formulario-de-contacto-en-prestashop/ Link to comment Share on other sites More sharing options...
Recommended Posts