Jump to content
joelbr

[SOLUCIONADO]Añadir re-captcha google a contacto de prestashop 1.6.1.4

Recommended Posts

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 by joelbr (see edit history)

Share this post


Link to post
Share on other sites

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 by joelbr (see edit history)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Hola, podrías explicarlo para que una persona tan torpe como yo lo sepa hacer,

Y para ponerlo en el registro? gracias..

Edited by pallman (see edit history)

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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;
	}
}

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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 @nadiehttps://victor-rodenas.com/2018/02/21/se-estan-colando-rusos-o-chinos-por-el-formulario-de-contacto-en-prestashop/
 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More