Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Kmario19

[MOD] no CAPTCHA reCAPTCHA para el registro

Recommended Posts

Hola gente tal vez muchos de nosotros nos hemos topado con este tipo de captcha en alguna web, blog o foro:

Recaptcha_anchor%402x.gif

Pues, les enseño a como instalarlo en su script:

1. Registrar un sitio para usar la aplicación, aquí nos aseguraremos desde qué dominios se usará el captcha para hacerlo bien seguro. https://www.google.com/recaptcha/admin#list

mu6754T.png

Colocar un título, los dominios donde usarás el captcha y uno o varios correos a los cuales se enviaran alertas si algo sospechoso ocurre en su web al usar el captcha.

Luego de registrar interesa conservar las claves del sitio como estas:

kE020Sx.png

2. En el archivo inc/class/c.registro.php buscar y eliminar:

			'user_captacha_challenge' => $_POST['recaptcha_challenge_field'],
			'user_captacha_response' => $_POST['recaptcha_response_field'],

Mas abajo buscar:

		$robot = recaptcha_check_answer(RC_PIK,$_SERVER["REMOTE_ADDR"],$tsData['user_captacha_challenge'],$tsData['user_captacha_response']);
		if(!$robot->is_valid) return 'recaptcha: El código es incorrecto.';

Reemplazar por:

		$secret = "AQUI TU CLAVE SECRETA";
		$robot = new ReCaptcha($secret);
		$robot->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST['g-recaptcha-response']);
		if(!$robot->success) return 'recaptcha: Hey que pasa? Demuestra que no eres un robot!';

En la variable $secret colocar la clave secreta que se creó en el paso anterior.

3. Descargar y reemplazar el archivo inc/ext/recaptchalib.php:

https://www.dropbox.com/s/ogmi26w0g8krnwb/recaptchalib.php?dl=0

4. En el archivo js/registro.js buscar:

			case 'recaptcha_challenge_field':
				return true;
				break;
			case 'recaptcha_response_field':
				//Si ya paso por aca y no hubieron cambios, devuelvo el mismo status
				if(!force_check && this.datos[campo] === value && this.datos['recaptcha_challenge_field'] == $('#RegistroForm .pasoDos #recaptcha_challenge_field').val())
					if(this.datos_status[campo]=='empty')
						return no_empty ? this.show_status(el, this.datos_status[campo], this.datos_text[campo]) : this.hide_status(el, this.datos_status[campo], this.datos_text[campo]);
					else
						return this.show_status(el, this.datos_status[campo], this.datos_text[campo]);

				//Almaceno el dato
				this.datos[campo] = value;
				this.datos['recaptcha_challenge_field'] = $('#RegistroForm .pasoDos #recaptcha_challenge_field').val();

				//!empty
				if(empty(value)){
					var status = 'empty';
					var text = 'El campo es requerido';
					if(no_empty)
						return this.show_status(el, status, text);
					else
						return this.hide_status(el, status, text);
				}

				return registro.show_status(el, 'ok', 'OK');
				break;

Reemplazar por:

			case 'g-recaptcha-response':
				this.datos[campo] = value;
				//!empty
				if(!value){
					return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que no eres un robot');
				}
				return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK');
				break;

Mas abajo buscar:

					registro.datos['recaptcha_response_field'] = '';
					Recaptcha.reload('t');

Reemplazar por:

					registro.datos['g-recaptcha-response'] = '';
					grecaptcha.reset();

Mas abajo buscar:

registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2));

Reemplazar por:

registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':')+2));

5. En el archivo templates/t.php_files/p.registro.form.tpl.php buscar:

		<div class="form-line">
			<label for="recaptcha_response_field">Ingresa el c&oacute;digo de la imagen:</label>

			<div id="recaptcha_ajax">
				<div id="recaptcha_image"></div>
				<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
			</div> <div class="help recaptcha"><span><em></em></span></div>
		</div>

Reemplazar por:

		<div class="form-line">
			<label>Demuestra que no eres un robot:</label>
			<div class="g-recaptcha" data-sitekey="AQUI TU CLAVE DEL SITIO"></div>
			<div class="help"><span><em></em></span></div>
		</div>

En el atributo data-sitekey colocar la clave del sitio que se creó en el paso #1.

Mas abajo buscar:

$.getScript("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function(){
	Recaptcha.create('6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L', 'recaptcha_ajax', {
		theme:'custom', lang:'es', tabindex:'13', custom_theme_widget: 'recaptcha_ajax',
		callback: function(){
			$('#recaptcha_response_field').blur(function(){
				registro.blur(this);
			}).focus(function(){
				registro.focus(this);
			}).attr('title', 'Ingrese el c&oacute;digo de la imagen');
		}
	});
});

Reemplazar por:

$.getScript("https://www.google.com/recaptcha/api.js?hl=es");

Y listo, eso es todo lo que hay que hacer, les quedará algo como esto:

ResOGH9.png

NKOhOEi.png

Espero les haya gustado, sobretodo a Rengo que sufrió un poco instalando el captcha, que te sirva. Nos vemos en otro aporte B)

 

 

Edited by Kmario19
  • Like 17
  • Downvote 1

Share this post


Link to post
Share on other sites

Buen mod Kmario, esto debería estar por defecto en el script +1

ya casi lo tenia instalado 
ijvrTi.gif+1
Lo voy a instalar :3

Qué lento eres rengo, ni siquiera era difícil por lo que veo xD

  • Like 1

Share this post


Link to post
Share on other sites

Buen mod Kmario, esto debería estar por defecto en el script +1

Qué lento eres rengo, ni siquiera era difícil por lo que veo xD

9qkuW.jpg

 

isidro te dio +1 por lo de poner el recaptcha 2.0 en la default seguro, esa idea la tuve yo primero e,e

  • Haha 1

Share this post


Link to post
Share on other sites

exclenet amigo como siempre muchas gracias lo instale en mi web de pruebas motomex.es  y quedo genial se ve muy bien pero cunado le das terminar no pasa de ahi tiene que volver a poner el no soy un robot y eso por que ¿?+1 por el aporte saludos

Edited by aaron

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Miguel92
      Actualizar Recaptcha V.1 a Recaptcha V.2
      (con consultas y administración de claves)
       
      ReCaptcha v.2 (Por: @Kmario19) para generar/crear dichas claves mirá el topic de abajo
      ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
      ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 
       
      Si tienes la 1.3.0.000 no hacer los pasos de los PHP y hacer los otros, y deben reemplazar privatekey y secretkey por estas pkey y skey
       
      1 - Realizamos está consultas
      ALTER TABLE `w_configuracion` ADD `publickey` VARCHAR(80) NOT NULL AFTER `url`, ADD `privatekey` VARCHAR(80) NOT NULL AFTER `publickey`;  
      2 - Buscamos en inc/class/c.admin.tpl y buscamos 
                  'url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['url'])),
      y debajo pegamos
                  'publickey' => $tsCore->setSecure($_POST['publickey']),             'privatekey' => $tsCore->setSecure($_POST['privatekey']), luego un poco más abajo buscamos 
        
       // UPDATE         if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_configuracion` SET `titulo` = \'' . $c['titulo'] . '\', `slogan` = \'' .             $c['slogan'] . '\', `url` = \'' . $c['url'] . '\', y a lado agregamos
          `publickey` = \'' . $c['publickey'] . '\',  `privatekey` = \'' . $c['privatekey'] . '\',  
      3 - Buscamos en inc/class/c.registro.php y borramos en las líneas 63 y 64
                  'user_captacha_challenge' => $_POST['recaptcha_challenge_field'],             'user_captacha_response' => $_POST['recaptcha_response_field'],
      más abajo buscamos
              // CAPTACHA         require(TS_EXTRA . 'recaptchalib.php');         $robot = recaptcha_check_answer(RC_PIK,$_SERVER["REMOTE_ADDR"],$tsData['user_captacha_challenge'],$tsData['user_captacha_response']);         if(!$robot->is_valid) return 'recaptcha: El código es incorrecto.'; y la reemplazamos por debemos Eliminar el archivo recaptchalib.php ya que no será necesaria
      /** reCAPTCHA [de la versión 1.3.0.000] **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['privatekey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); // Obtener respuesta $response = file_get_contents($recaptcha); // Extraer resultado $ext1 = explode('"success":', $response); $ext2 = explode(',', $ext1[1]); // Comprobar resultado $valid = trim($ext2[0]); // Devolver respuesta si es incorrecta if ($valid == 'false') { return 'recaptcha: Demuestra que no eres un robot! XD'; } 4 - Ahora iremos a default/templates/admin_mods/m.admin_configs.tpl y buscamos
                                              <dl>                                             <dt><label for="ai_url">Dirección del sitio:</label></dt>                                             <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd>                                         </dl> y debajo pegamos
                                              <hr />                                         <dl>                                             <dt><label for="ai_publickey" class="col-sm-4 col-form-label">Key de recaptcha publica:</label></dt>                                             <dd><input type="text" class="form-control" id="ai_publickey" name="publickey" maxlength="50" value="{$tsConfig.publickey}"></dd>                                         </dl>                                          <dl>                                             <dt><label for="ai_privatekey" class="col-sm-4 col-form-label">Key de recaptcha privada:</label></dt>                                             <dd><input type="text" class="form-control" id="ai_privatekey" name="privatekey" maxlength="50" value="{$tsConfig.privatekey}"></dd>                                         </dl>                                          <hr>
      5 - Ahora en default/templates/t.php_files/p.registro_form.tpl buscamos
              <div class="form-line">             <label for="recaptcha_response_field">Ingresa el código de la imagen:</label>             <div id="recaptcha_ajax">                 <div id="recaptcha_image"></div>                 <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />             </div> <div class="help recaptcha"><span><em></em></span></div>         </div> y la reemplazamos por
              <div class="form-line">             <label>Demuestra que no eres un robot:</label>             <div class="g-recaptcha" data-sitekey="{$tsConfig.publickey}"></div>             <div class="help"><span><em></em></span></div>         </div>
      luego más abajo buscamos y la borramos
      //Load recaptcha $.getScript("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function(){     Recaptcha.create('6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L', 'recaptcha_ajax', {         theme:'white', lang:'es', tabindex:'13', custom_theme_widget: 'recaptcha_ajax',         callback: function(){             $('#recaptcha_response_field').blur(function(){                 registro.blur(this);             }).focus(function(){                 registro.focus(this);             }).attr('title', 'Ingrese el código de la imagen');         }     }); }); Arriba de
      <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ Agregaremos
      <script src="https://www.google.com/recaptcha/api.js" async defer></script> Luego deben ir a
       
    • By aflope
      Buenas tardes alguien me ayuda quitar el reCAPTCHA v2 de la sección de registro!

    • By kiko
      "Hola Tengo este problema como lo soluciono gracias ... error para el propietario del sitio web recaptcha Mi web es esta               masdescarga.xyz
       
       
       
       

    • By carpriser
      Hola Amigos yo por aquí molestándo
       
      He buscado por todo phpost y no he podido encontrar un mod que me permita decidir que links son para ocultar y cuales no

      Tengo un users que ponen directamente esta clase de links http://cutwin.com/W8nKBA5a
      Y debo entrar al post y encerrarlo así http://cutwin.com/W8nKBA5a uno por uno

      Tengo otros users que ponen links de lupaste http://lupaste.com/?v=22369 y quedan expuestos no puedo poner la opción de ver solo para Sólo usuarios registrados pues para publicarlos en las redes me pone problema
      Mi propuesta es: se puede crear un mod que pueda automáticamente encerrar los links en un , dando la oportunidad de escoger que servidores son para ocultar y cuales no
      Perdonen la molestadera pero no tengo a quien mas acudir
       
      Regalamen una respuesta y disculpen las molestias
    • By Alan
      Hola, como verán recientemente hay un usuario que anda molestando con un error en la fuente de los BBcodes. El error consiste básicamente en que dicho BBcode carece de verificación, entonces se podía ingresar algunos carácteres HTML y poner una fuente gigante lo que no permitía navegar por los posts y al cliquear llevaba a una página, no representa un error grave en sí, por lo que no hay que alarmarse ya que sus datos personales y de hosting están seguros. Sin embargo puede ser muy molesto, por lo que es muy recomendado instalar este fix.
       
      Instalación automática: Para solucionarlo suban la carpeta INC que subí AQUÍ en la raíz de su sitio y reemplacen los archivos y ya estará solucionado el error. 
      Instalación manual: Si han modificado los archivos, pueden optar por instalarlo manualmente:
       
      Abran el archivo bbcode.inc.php ubicado en /inc/ext/bbcode.inc.php y busquen (está en la línea 10): require_once 'JBBCode/validators/ImgValidator.php';   Y abajo coloquen:
      require_once 'JBBCode/validators/FontValidator.php'; Busquen:
       
      $imgValidator = new \JBBCode\validators\ImgValidator(); Y debajo coloquen:
      $fontValidator = new \JBBCode\validators\FontValidator(); Busquen:
      array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true), Y lo reemplazan por:
                  array('tag' => 'font', 'replace' => '<span style="font-family: {option}">{param}</span>', 'option' => true, 'validOption' => $fontValidator), 2.  Crear un archivo con nombre FontValidator.php dentro de /inc/ext/JBBcode/validators/ con el siguiente contenido:
       
      <?php namespace JBBCode\validators; require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'InputValidator.php'; /** * Validador de fuentes para evitar kakeos * * @author Alan * @since Sep 2016 */ class FontValidator implements \JBBCode\InputValidator { /** * Retorna true si $input es alfabético * * @param $input string a validar */ public function validate($input) { return !!preg_match('/^[a-z0-9\s]+$/i', $input); } } Y ya debería funcionar, no digo que esto sea un fix oficial ya que lamentablemente ya no pertenezco al staff  pero cuando Isidro lo vea podrá decidir que es lo que hace.
       

       
      Saludos!
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×