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

[Fix] no CAPTCHA reCAPTCHA para el registro

Recommended Posts

c33Nb.gif 
Ya que @Kmario19 no lo puede publicar, lo haré yo por que mucho lo vamos a necesitar xD
Fix y créditos para kmario.

 

El fix es el siguiente,
Cuando instalamos este mod,

 

Nos registramos, llegamos al captcha y cuando completamos se reinicia..

No lo podemos registrar,
que hacemos?
Miramos el mod el parte 2.

Buscamos:
 

$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!';

lo reemplazamos por:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'secret'   => "AQUI TU CLAVE SECRETA",
    'response' => $_POST['g-recaptcha-response'],
]));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);

curl_close($ch);

$response = @json_decode($data);

if(empty($response) || !$response->success) return 'recaptcha: Hey que pasa? Demuestra que no eres un robot!';

Recuerden colocar su CLAVE SECRETA.
 

Y listo, eso es todo lo que hay que hacer.

 

Hasta luego 8b2wY.gif

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites

Yo ya lo habìa comentado en el tema original, denunciado!

 

Na, mejor asì, lo va a ver más gente

Share this post


Link to post
Share on other sites
hace 10 horas, CkOie dijo:

Funciona perfecto en mi sitio ^^

Y claro que lo reposteaste en el foro de skylium jajajja

Share this post


Link to post
Share on other sites
On 12/4/2018 at 23:00, Rengo dijo:

c33Nb.gif 
Ya que @Kmario19 no lo puede publicar, lo haré yo por que mucho lo vamos a necesitar xD
Fix y créditos para kmario.

 

El fix es el siguiente,
Cuando instalamos este mod,

 

Nos registramos, llegamos al captcha y cuando completamos se reinicia..

No lo podemos registrar,
que hacemos?
Miramos el mod el parte 2.

Buscamos:
 

$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!';

lo reemplazamos por:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'secret'   => "AQUI TU CLAVE SECRETA",
    'response' => $_POST['g-recaptcha-response'],
]));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);

curl_close($ch);

$response = @json_decode($data);

if(empty($response) || !$response->success) return 'recaptcha: Hey que pasa? Demuestra que no eres un robot!';

Recuerden colocar su CLAVE SECRETA.
 

Y listo, eso es todo lo que hay que hacer.

 

Hasta luego 8b2wY.gif

Hola Rengo, de que se trata este fix? hasta hace poco probe y funcionaba en registro en mi web.. es necesario aplicar el fix?

Share this post


Link to post
Share on other sites
hace 2 horas, ElBatman dijo:

Hola Rengo, de que se trata este fix? hasta hace poco probe y funcionaba en registro en mi web.. es necesario aplicar el fix?

Hola, si tenes el mismo mod y te funciona sin fix, podes dejarlo asi, pero si tenes v1 de captcha, si recomiendo actualizar v2 que es el mod de kmario,
la v1 esta obsoleta y la v2 algunos les funciono sin fix, en mi caso, con fix.
Podes probar registrarte y ver que tal..

Share this post


Link to post
Share on other sites

Me gusta tu fix, un par de detalles.

En vez de usar todo ese código, mejor hacer esto:

$secret = 'CLAVE PRIVADA';
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
$response = json_decode($response,true);
if(!intval($response["success"])) return 'recaptcha: Comprueba de que no eres un robot.';

Y también te faltó que no es necesario requerir el archivo recaptchalib.php y tampoco es necesario tenerlo, así que se puede borrar perfectamente.

 

Edited by SeniorBolainas
Responses -> Response (por la adaptación de mi script a Phpost Risus)
  • Like 1

Share this post


Link to post
Share on other sites
hace 4 horas, SeniorBolainas dijo:

Me gusta tu fix, un par de detalles.

En vez de usar todo ese código, mejor hacer esto:

$secret = 'CLAVE PRIVADA';
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
$response = json_decode($response,true);
if(!intval($response["success"])) return 'recaptcha: Comprueba de que no eres un robot.';

Y también te faltó que no es necesario requerir el archivo recaptchalib.php y tampoco es necesario tenerlo, así que se puede borrar perfectamente.

 

Muy bien! como en la documentación dice que la solicitud se hace vía post por eso usé curl, pero así va de lujo.

  • Thanks 1

Share this post


Link to post
Share on other sites

Que alguien me ayude hice todos los pasos dos veces y me queda el capcha infinito... Alguien pudo solucionar??

Enviado desde mi SM-J710MN mediante Tapatalk

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 Kmario19
      Hola a todos, soy Kmario19. Tal vez me recuerden de mods como la portada de los posts, o secciones como las de juegos y las comunidades. Esta vez vengo con un fix para aquellos sitios que tengan millones de visitas y la tabla w_visitas esté afectando la carga de un post ya que es la tabla que más registros genera.
       
      Junto a @Rengo estuvimos analizando por qué los posts cargaba tan lento, después de un rato noté que una consulta en particular era la culpable:
       
      db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_visitas` SET `date` = \''.time().'\', ip = \''.$tsCore->getIP().'\' WHERE `for` = \''.(int)$post_id.'\' && `type` = \'2\' && `user` = \''.$tsUser->uid.'\' LIMIT 1'); Esta línea está en c.posts.php en la función getPost. (esta consulta actualiza la fecha de visita del usuario logueado al post)
       
      El problema es que después de que el sitio tenga suficiente tiempo online o muchísimas visitas, esta tabla w_visitas llega a tener millones de registros y cuando una tabla así no está indexada tiende a hacer una consulta "FULL SCAN" por lo que básicamente tiene que recorrer todos los registros para poder finalizar su tarea, y en el caso del sitio de pruebas tiene más de 2 millones de registros.
       
      Entonces, para todos aquellos que quieran evitar este pequeño problema de rendimiento a futuro cuando tengan muchas visitas o si ya se les presenta el caso, la solución es ir a su base de datos y ejecutar la siguiente consulta:
       
      ALTER TABLE `w_visitas` ADD INDEX (`for`, `type`, `user`);  
      Y listo, eso soluciona el problema.
       
      Para que se hagan una idea de los resultados, esta es una consulta antes de agregar el indice:
       

       
      Y esta es la misma consulta después de agregar el índice:
       

       
      Estamos hablando de una absurda reducción de 91150% de acuerdo al tiempo de ejecución de MySQL pero realmente pasamos a un tiempo de carga del sitio de unos 6 segundos aprox. a menos de 1 segundo.
       
      Bueno, es un índice que debería ir por defecto en el .sql con el que se instala el script para evitar ese inconveniente a futuro. Seguramente algunas otras secciones críticas del script con el pasar del tiempo y vayan creciendo necesitarán de estos índices para mejorar los tiempos de consulta de la base de datos.
       
      Bueno no siendo más, me despido. Hasta otra ocasión... espero no tan tardía xD
    • By Miguel92
      Problemas al comentar y/o enviar mensaje 
      después de haber agregado el wysibb
       
      Si actualizaste y te has topado con este problema, bueno te traigo la solución.
       
      [1] SOLUCIONADO: No puedo comentar
      Ir a default/js/funciones.js y buscan
          // NUEVO COMENTARIO     nuevo: function(mostrar_resp, comentarionum){         // EVITAR FLOOD         $('#btnsComment').attr({'disabled':'disabled'});         //         var textarea = $('#body_comm');         var text = textarea.val(); y en la parte que dice .val(); lo cambian por .bbcode();
              var text = textarea.bbcode();  
      [2] SOLUCIONADO: No puedo previsualizar el comentario
      Ir a default/js/funciones.js y buscan
      // VISTA PREVIA DEL COMENTARIO     preview: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = (type == 'new') ? textarea.bbcode() : textarea.val(); // 26/09/2019 16/05/2018
      Con la nueva actualización del script phpost_1.3.0.000 tiene este problema, en el momento que lo estaba haciendo me había funcionado de la manera que esta publicado..luego tuve el error de no poder editar el comentario y la solución fue revertir este paso y de esa manera edita y previsualiza
       
       
      SOLUCIONADO: No puedo previsualizar el mensaje
      Ir a default/js/funciones.js y buscan
          // VISTA PREVIA DEL MENSAJE     previewms: function(id, type){         var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id);         var text = textarea.val(); lo mismo que el paso anterior
              var text = textarea.bbcode();  
      [3] SOLUCIONADO: No puedo enviar mensaje desde "Mensajes"
      Ir a default/js/acciones.js y buscan
          // RESPONDER     responder: function(mp_id){         this.vars['mp_id'] = $('#mp_id').val();         this.vars['mp_body'] = encodeURIComponent($('#respuesta').val()); // Fix: 14/12/2014 - 1.1.000.9 lo mismo que el paso anterior  .val(); lo cambian por .bbcode();
              this.vars['mp_body'] = encodeURIComponent($('#respuesta').bbcode()); // Fix: 14/12/2014 - 1.1.000.9  
      En el caso de encontrar mas lo ire colocando!
    • By Tronlar
      Hola a [email protected],os dejo como hacer funcionar el sistema de captcha en las V5,V6,lo acabo de probar y funciona bien.
       
       
      Ejecutar esta consulta:
      ALTER TABLE `w_configuracion` ADD `pkey` VARCHAR(55) NOT NULL AFTER `offline_message`, ADD `skey` VARCHAR(55) NOT NULL AFTER `pkey`;  
      En c.admin.php --> inc/class/c.admin.php
       
      Buscar:
      'newr' => empty($_POST['newr']) ? 0 : 1);
      Cambiar por:
      'newr' => empty($_POST['newr']) ? 0 : 1, 'pkey' => $tsCore->setSecure($_POST['pkey']), 'skey' => $tsCore->setSecure($_POST['skey']),  
       
      Buscar:
      '\', `offline_message` = \'' . $c['offline_message'] .  
      Añadir al lado:
      '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .
      Tiene que quedar así:
      '\', `offline_message` = \'' . $c['offline_message'] . '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] .  
       

      En c.registro.php --> inc/class/c.registro.php
       
      Buscar:
      'user_captacha_challenge' => $_POST['recaptcha_challenge_field'], 'user_captacha_response' => $_POST['recaptcha_response_field'],  
      Cambiar por:
      'user_captcha' => $_POST['g-recaptcha-response'],  
      Buscar:
      'captacha' => 'El código es incorrecto'
      Cambiar por:
      'captcha' => 'Validación incorrecta',  
       
      Buscar:
      // 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.';

      Cambiar por:        
      /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&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: No hemos podido validar tu humanidad'; }  
       
      registro.js --> default/js/registro.js
      registro.js --> V6/js/registro.js
       
      Buscar:
      /* reCAPTCHA */ 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; } },  

      Cambiar por:    
      /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; } },  
       
      Buscar:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2)); break;
         
      Cambiar por:
      case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break;

      t.registro.tpl --> default/templates/t.registro.tpl
      t.registro.tpl --> V6/templates/t.registro.tpl    
          
       Buscar:
      <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" id="nubex"><span id="puy"></span><span><em></em></span></div> </div>  

      Cambiar por:
      <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div>
         
      Buscar:
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); //Load recaptcha $.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ódigo de la imagen'); } }); }); </script>

      Cambiar por:       
      <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script>

       m.admin_configs.tpl     --> default/templates/admin_mods/m.admin_configs.tpl            
       m.admin_configs.tpl     --> V6/templates/admin_mods/m.admin_configs.tpl    
              
      Buscar:   
      <dl> <dt><label for="ai_xat">Xat ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd><input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> <hr />  

      Añadir debajo:
      <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="pkey" name="pkey" value="{$tsConfig.pkey}" /> </dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="skey" name="skey" value="{$tsConfig.skey}" /> </dd> </dl> <hr />  
       
       
      Y con eso ya la tienen funcionando,saludos.


       
       
       
       
       

              
           
       
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×