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

[FIX] Localizacion de usuarios - filtrado por IP - Risus 1.2

Recommended Posts

Este FIX es para completar el fantástico MOD creado por Kmario19 que permite visualizar la última actividad de los usuarios en nuestra web.


Según avisaba el autor en el topic aún estaba pendiente de añadir la identificación por IP que permitiría guardar los registros de actividad de los visitantes de forma independiente en función de su IP. Aquí te dejo los pasos para incluir la identificación por IP de usuarios y visitantes.

Paso 1- En primer lugar debes instalar el MOD indicado arriba siguiendo los pasos explicados en el topic por Kmario19.

Paso 2- Lo siguiente es añadir una nueva consulta a la base de datos donde se guardará la IP del usuario:

ALTER TABLE `u_localizacion` ADD `ip` VARCHAR( 40 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AFTER `fecha` 

Paso 3- Abrimos el archivo inc/class/c.localizacion.php y buscamos:

// YA TUVO ACTIVIDAD?
		$sql = mysql_query('SELECT id_user FROM u_localizacion WHERE id_user = '.$user_id);
		//
		if (mysql_num_rows($sql) > 0) {
			// ACTUALIZAMOS LA LOCALIZACION
			mysql_query('UPDATE u_localizacion SET tipo = \''.$tipo.'\', lugar = \''.$lugar.'\', titulo = \''.$titulo.'\', url = \''.$url.'\', fecha = \''.time().'\' WHERE id_user = '.$user_id);
		} else {
			// INSERTAMOS NUEVA LOCALIZACION
			mysql_query('INSERT INTO u_localizacion (tipo, id_user, lugar, titulo, url, fecha) VALUES (\''.$tipo.'\', \''.$user_id.'\', \''.$lugar.'\', \''.$titulo.'\', \''.$url.'\', \''.time().'\')');
		}

Lo sustituimos todo por esto:

$newip = $tsCore->setSecure($_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : $_SERVER['X_FORWARDED_FOR']);
        $caduca = time() - (2 * 3600);// 2 horas
        $data = db_exec('fetch_assoc', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT id_user, ip FROM u_localizacion WHERE id_user = \''.$user_id.'\'  LIMIT 1'));
        //
        // Borramos registros de visitantes tras 2 horas
        db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_localizacion WHERE id_user = 0 AND fecha <= '.$caduca.'');
        // HA INICIADO SESION?
        if ($data['id_user'] >= 1) {
            // ACTUALIZAMOS LA LOCALIZACION DEL USUARIO
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_localizacion SET tipo = \''.$tipo.'\', lugar = \''.$lugar.'\', titulo = \''.$titulo.'\', url = \''.$url.'\', fecha = \''.time().'\' WHERE id_user = '.$user_id);
            //
        // ES UN VISITANTE?
        } elseif ($data['id_user'] == 0 && $data['ip'] == $newip) {
            // ACTUALIZAMOS LA LOCALIZACION DEL VISITANTE MEDIANTE SU IP
            db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_localizacion SET tipo = \''.$tipo.'\', lugar = \''.$lugar.'\', titulo = \''.$titulo.'\', url = \''.$url.'\', fecha = \''.time().'\' WHERE ip = \''.$newip.'\' AND id_user = 0');
            //
        } else {
            // INSERTAMOS NUEVA LOCALIZACION
            db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_localizacion (tipo, id_user, lugar, titulo, url, fecha, ip) VALUES (\''.$tipo.'\', \''.$user_id.'\', \''.$lugar.'\', \''.$titulo.'\', \''.$url.'\', \''.time().'\', \''.$newip.'\')');
        }

Eso sería todo. Ahora las visitas serán filtradas por su IP y se mostrarán los registros de visitantes de forma independiente. Sólo está probado en localhost.

EXTRA

Este FIX incluye en el código la orden de borrar todos los registros de los visitantes pasadas 2 horas desde su última visita para ahorrar espacio en la base de datos. Puedes modificar el tiempo que quieras mantener esos registros antes de ser borrados cambiando el número 2 por las horas que quieras en esta línea:

$caduca = time() - (2 * 3600);

Si quieres mantener todos los registros de localizacion en tu base de datos sin eliminarlos debes anular esta línea:

		db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_localizacion WHERE id_user = 0 AND fecha <= '.$caduca.'');

(Puedes borrarla directamente o colocar doble // al inicio de la linea para que sea ignorada.)

 

Edited by rooteroman
  • Like 6

Share this post


Link to post
Share on other sites

Mira que no sabia que tenia ese problema... bien por el fix..

Gracias.. +1

Recuerdo que el autor lo avisaba en el video que publicó para explicar el funcionamiento del MOD. Gracias por la visita.

buen fix y el toque de elimar contenido aunque para mi es un mod que no le veo un fin practico pero ya le suma mucho las mejoras

+1

En mi opinión es muy práctico a nivel adminitrativo para controlar la actividad de usuarios y visitantes dentro de la página. Un saludo

Edited by rooteroman

Share this post


Link to post
Share on other sites

Buen aporte, siempre es bueno ayudar a mejorar a si sea con un granito de arena a Risus.

Cierto amigo. Gracias.

Muchas gracias por compartirlo! +1

Igualmente por la visita

Share this post


Link to post
Share on other sites

Genial que estés interesado y hayas aportado algo al mod y el foro, estaba por hacer una V2 pero siempre lo dejé en cola por otras prioridades, de todas formas si saldrá una V2 sin tantas modificaciones para que haga las localizaciones sin necesidad de editar cada archivo.

Faltó aclarar que este fix es en base a la versión 2.x de Risus así que hay que actualizar el mod que hice en ese tiempo.

Toma +1 :D

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 Solo_Duvan
      Hola amigos, me percate que los comentarios de los post no se pueden editar, les dejo un pequeño fix por si les molesta este problema.
       
      Vamos a funciones.js ubicado en themes/default/js y buscamos:
       
      var text = textarea.bbcode();  
      Lo reemplazamos con esto:

       
      var text = (type == 'new') ? textarea.bbcode() : textarea.val();  
      Listo, ahora podremos editar comentarios, espero les funciones. Saludos 😉
    • 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 Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      No sé si es exactamente lo que se pidió..
       
      Quedaría como la imagen, pero obviamente no tiene ese borde rojo ya que lo estaba probando...

       
      Ahora deben de seguir los siguientes pasos...(creo que les va a servir para cualquier theme con comunidades y cualquier versión de Risus)
      Buscamos en inc/class/c.comunidades.php
                  } elseif($type == 3) {                 $this->mod_history($comid, 5, $comid);                 $name = 'cf_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             }  y debajo o al lado de } pegamos
                   elseif($type == 4) {                 $this->mod_history($comid, 6, $comid);                 $name = 'head_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             } Luego buscamos en inc/php/ajax/ajax.comunidades.php
              case 'comunidades-edit_fondo':             //<--                 $result = $tsCom->uploadImagen($_FILES['background'], $_GET['comid'], 3);                 echo $tsCore->setJSON($result);             //-->         break; y debajo agregaremos
              case 'comunidades-edit_header':             //<--                 $result = $tsCom->uploadImagen($_FILES['header'], $_GET['comid'], 4);                 echo $tsCore->setJSON($result);             //-->         break; Luego vamos a themes/TUTHEME/js/comunidades.js y buscamos
          votar_tema: function(voto) {         $('#loading').fadeIn(250);         voto = (voto == 'pos') ? 'pos' : 'neg';         var votos = $('#votos_total');         var total_votos = parseInt(votos.text());         total_votos = (isNaN(total_votos)) ? 0 : total_votos; Arriba de esto pegamos lo siguiente
          subir_cabecera: function() {         $('#loading').fadeIn(250);         if ($('#head_input').val()) {             if(isImageFile($('#head_input').val())){                 $('#head_change').css({'opacity' : 0.5});                 $.ajaxFileUpload({                     url: global_data.url + '/comunidades-edit_header.php?' + cgget('comid', true),                     fileElementId: 'head_input',                     dataType: 'json',                     success: function(h){                         if(h.charAt(0) == 1) {                             $('#head_change').css({'opacity' : 1});                             $('#head_change').attr({'src' : h.substring(3) + '?' + new Date().getTime()});                         } else {                             mydialog.alert('Error', h.substring(3));                         }                                         $('#loading').fadeOut(250);                     }                 });             } else mydialog.alert('Error', 'El archivo no es una imagen válida.');         } else mydialog.alert('Error', 'No selecciono ningun archivo.');     },  
      Más abajo buscamos
          if(global_com.comid!='') {         $('body').css({'background-image' : 'url("' + global_data.url + '/files/uploads/cf_' + global_com.comid + '.jpg")'});     }
      y debajo agregamos
          if(global_com.comid!='') {         $('.headercom').css({'background-image' : 'url("' + global_data.url + '/files/uploads/head_' + global_com.comid + '.jpg")'});     } Solo tendríamos que agregar la clase .headercom en donde queramos que aparezca la cabecera de la comunidad
       
      Luego en themes/TUTHEME/templates/comunidades/c.crear_right.tpl y arriba de
      <input type="hidden" id="comid" value="{$tsDato.c_id}" /> <div class="com_box_title clearfix"><h2>Imagen de la comunidad</h2></div>
      Pegamos
          <div class="com_box_title clearfix"><h2>Cabecera de la comunidad</h2></div>     <div class="com_edit_imagen" align="center"> <img src="{$tsConfig.url}/files/uploads/head_{$tsDato.c_id}.jpg" id="head_change" height="180" width="100%" /> <input type="file" id="head_input" class="input_text" name="header" style="width: 100%;" onchange="com.subir_cabecera({$tsDato.c_id})" /> </div>  
      En themes/TUTHEME/templates/comunidades/c.com_info.tpl
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info headercom">     <div class="opacity">     <div class="vci_left floatL">
      luego más abajo buscamos
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div> </div>
      y la reemplazamos por
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div>     </div> </div> por último en themes/TUTHEME/css/comunidades.css agregamos
      .ver_com_info {     padding: 0; } .headercom { /* De acá podrán darle estilo al fondo */     background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
      Luego trataré de hacer otro, pero que evite subir imagenes a nuestro servidor y que la suba a un web como por ejemplo imgur...creo, no sé...ya lo veré
      PD: Si al editar la imagen no cambia, presionen "CTRL + SHIFT + R" y para evitar eso busquen en t.comunidades.tpl 
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js"></script> y lo cambian por
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js?{$smarty.now}"></script>  
    • 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



  • ×