Fórum dos Fóruns

Fórum dos Fóruns Forumeiros

Welcome FdF Bem-vindo ao fórum de suporte Forumeiros  Muito feliz


Para aproveitar tudo o que o nosso fórum lhe oferece, agradecemos que se identifique, se já é nosso membro, ou que se junte à nossa comunidade, fazendo o seu registo.
Acesso rápido

Fóruns de suporte oficiais
Conectar-se

Esqueci minha senha

Últimos assuntos
» Fichas e personagem e :
Hoje à(s) 4:22 por Claudio Arthur

» Banner got
Hoje à(s) 3:32 por Neji

» Utilização de Templates nas Páginas
Hoje à(s) 3:10 por ZombieW

» Canais ao lado
Hoje à(s) 2:46 por Froozen

» Ranks PMS + Banner
Hoje à(s) 1:09 por Tiger

» Personalizar Menu
Hoje à(s) 0:26 por YouTube3

» como ativo a opção contribuição no rodapé
Ontem à(s) 23:19 por joaopaulo98

Perdi minha senha!
Você precisa recuperar sua senha?
Clique aqui
Parceiros Forumeiros
Os membros mais ativos da semana
Tiger
 
YouTube3
 
Froozen
 
ZombieW
 
Neji
 
Claudio Arthur
 

Quem está conectado
154 usuários online :: 2 usuários cadastrados, 1 Invisível e 151 Visitantes :: 2 Motores de busca

Holkis, Neji

[ Ver toda a lista ]


O recorde de usuários online foi de 3131 em Qui 24 Dez 2009 - 15:05

Código para mostrar o tempo online do usuário

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 2:20

Detalhes da questão


Endereço do fórum: http://pokemonspacesoul.forumeiros.com/
Versão do fórum: PunBB

Descrição


Olá,
Eu vi que em alguns fóruns o tempo que o usuário é ativo fica no perfil e nas postagens, e eu gostaria se possível, que se alguém souber como fazer, me ajude.

Ex: iria ficar assim no perfil: 169dias 24h 36min 20s Online!



avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Ace em Qua 18 Nov 2015 - 2:28

Olá,

Poderia nos mandar um fórum onde viu isso?

Att.
avatar

Ace
Principal contribuidor
Principal contribuidor

Masculino
Inscrito dia : 06/07/2011
Mensagens : 8878
Pontos Ativos : 11600

http://ajuda.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 2:35

Neste:

www.pokemonrealforcerpg.com
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por MateusAnjosV em Qua 18 Nov 2015 - 14:02

avatar

MateusAnjosV
Membro do Fórum

Masculino
Inscrito dia : 16/10/2015
Mensagens : 1417
Pontos Ativos : 1978

http://ajuda.forumeiros.com/

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 15:40

Olá,
Eu tentei, mas não consegui fazer.
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Wamki em Qua 18 Nov 2015 - 15:47

Olá,
1- É criado dois campos no perfil dos membros, o primeiro tem o propósito de mostrar o tempo de conexão, o outro é usado como um pseudo-banco de dados;
2- O contador inicia quando o membro se conecta no fórum (faz login);
3- Então, a cada 30 segundos (valor padrão que pode ser alterado) o contador do tempo é incrementado e salvo no campo do perfil;
4- O contador só é resetado (reiniciado) quando o membro faz o "Log Out" (se desconecta) do fórum!
Se apenas fechar a página ou o navegador, o contador permanece ativo e é incrementado novamente quando no próximo login.

Abaixo está o código que deve ser adicionado com investimento "Em todas as páginas":
Código:

/*******************************************************************************************************
 * Application: elapsedTime (Total Time Spent On Forums)
 * Description: Will show how much time each member spends logged into the site.
 * Version: RC1 - Beta tester only!
 * Made and Optimizations by JScript - 2015/02/18
 * Copyright (c) 2015 JScript <jscriptbrasil at live dot com>
 * This work is free. You can redistribute it and/or modify it
 * under the terms of the WTFPL, Version 2
********************************************************************************************************
-
Variables that can be changed by the user:
1- tTimeOut
2- checkTime
3- fieldName
Note: For those variables "tTimeout" and "checkTime" ->
      - to avoid the "Request Limit" the lowest value should be 10 seconds and 30 seconds respectively!
*/
var elapsedTime = {
   autor:      'JScript',
   version:   '1.02202015-jq1.9.1',
   codename:   'Narmer (Sheikh Muftah)',

   /**
    * Related to database.
    **/
   fieldName:       'Time Online',
   field_id:       0,
   fd_description: 'Will show how much time each member spends logged into the site.',
   db_field:       0,
   db_content:    '',
   db_description: 'Database to store the data of the module elapsedTime!',
   db_url:       '/admin/index.forum?part=users_groups&sub=users&mode=avatar_profil2&extended_admin=1&tid=',
   response:       '',
   evalTextarea:   'jQuery(\'label:contains("elapsedTime_DB"), span:contains("elapsedTime_DB"), dt:contains("elapsedTime_DB")\', response).closest("dl, tr").find("textarea")',

   db_default: {
      appInfo: {
         module:       'elapsedTime_DB',
         description: 'Database to store the data of the module elapsedTime!',
         author:     'JScript',
         version:     'RC1 b',
         release:     '2015/02/18'
      },
      userInfo: {
         isOnline:    1,
         dateOld:    Number(new Date()),
         dateNow:    Number(new Date()),
         dateSpent:   ''
      }
   },

   /**
    * Related to intervals.
    **/
   lInterval:    10,
   tTimeOut:    10000,
   checkTime:    30000,
   setLoop:    0,

   // other variables...
   evalTID: 'jQuery(\'a[href*="tid="]\').attr("href").split("tid=")[1].split("&")[0]',
   TID: 0,

   /**
    * JavaScript/jQuery functions
    */
   initialize: function() {
      $(function() {
         return (!_userdata.session_logged_in) ? false : elapsedTime.setup();
      });
   },

   setup: function() {
      elapsedTime.TID = eval(elapsedTime.evalTID);
      /**
      * First checks if the database exists!
      **/
      jQuery.get('/profile?mode=editprofile', function(response) {
         elapsedTime.response = eval(elapsedTime.evalTextarea);

         // If the database does not exist, then an administrator will create it now!
         if ((!elapsedTime.response.length) && (_userdata.user_level == 1)) {
            elapsedTime.async(false);
            jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
               /* Post action */
               action:                'add_field',
               id:                   0,
               type:                   0,
               action:                'configuration_final',
               list_type_field:          2,
               field_name:             'elapsedTime_DB',
               field_desc:             elapsedTime.db_description + ' - Made by JScript, 2015/02/18',
               field_oblig:             0,
               field_display_profil:       1,
               list_field_type_view:       0,
               list_auth_field_himself:    1,
               list_field_view:         0,
               list_separator:            0,
               field_type_2_lng_max:      15000,
               submit:                1,
               field_type_11_max_before:    14,
               field_type_11_max_after:    6
            }).done(function() {
               jQuery.get('/profile?mode=editprofile', function(response) {
                  elapsedTime.response = eval(elapsedTime.evalTextarea);
               });
            });
            jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
               /* Post action */
               action:                'add_field',
               id:                   0,
               type:                   0,
               action:                'configuration_final',
               list_type_field:          13,
               field_name:             elapsedTime.fieldName,
               field_desc:             elapsedTime.fd_description + ' - Made by JScript, 2015/02/18',
               field_oblig:             0,
               field_display_message:       1,
               field_display_profil:       1,
               list_field_type_view:       0,
               list_auth_field_himself:   1,
               list_field_view:          -1,
               list_separator:          1,
               field_type_2_lng_max:       15000,
               submit:                1,
               field_type_11_max_before:   14,
               field_type_11_max_after:   6
            }).done(function(e) {
               console.log(e)
            });
            elapsedTime.async(true);
         }

         if (!elapsedTime.response.length) {
            return false;
         }

         elapsedTime.db_field = elapsedTime.response.attr('id');

         if (elapsedTime.response.val().length) {
            elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));
         }

         if ((!elapsedTime.response.val().length) || (!elapsedTime.db_content.userInfo.isOnline)) {
            elapsedTime.db_content = elapsedTime.db_default;

            elapsedTime.async(false);
               elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
            elapsedTime.async(true);

            elapsedTime.updateTime();
         }

         if (document.getElementById('fa_welcome') !== null) {
            jQuery('a[href$="logout=1"]').attr('href', jQuery('#logout').attr('href'));
         }
         jQuery('a[href*="logout=1"]').click(function(event) {
            elapsedTime.TID = eval(elapsedTime.evalTID);
            elapsedTime.db_content.userInfo.isOnline = 0;

            elapsedTime.async(false);
               elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
            elapsedTime.async(true);
         });
         /**
         * Writes the current time in the profile field...
         **/
         setTimeout(function() {
            setInterval(function() {
               elapsedTime.updateTime();
            }, elapsedTime.checkTime);
         }, elapsedTime.tTimeOut);

      }).fail(function(e) {
         console.log(e);
      });
   },

   async: function(mode) {
      jQuery.ajaxSetup({
         async: mode
      });
   },

   dataSave: function(field, content) {
      jQuery.post("/ajax_profile.forum?jsoncallback=?", {
         id: field.split("_")[3],
         user: _userdata.user_id,
         active: "1",
         content: '[["' + field + '", "' + content + '"]]',
         tid: elapsedTime.TID
      }, function(data) {
         // OK!
      }, "json").fail(function(e) {
         console.log(e);
      });
   },

   updateTime: function() {
      elapsedTime.TID = eval(elapsedTime.evalTID);

      jQuery.get('/profile?mode=editprofile', function(response) {
         elapsedTime.response = jQuery('label:contains("' + elapsedTime.fieldName + '"), span:contains("' + elapsedTime.fieldName + '"), dt:contains("' + elapsedTime.fieldName + '")', response).closest('dl, tr').find('input');
         elapsedTime.field_id = elapsedTime.response.attr('id');

         if (elapsedTime.response.length) {
            elapsedTime.response = eval(elapsedTime.evalTextarea);
            elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));

            elapsedTime.dataSave(elapsedTime.field_id, elapsedTime.getTime(elapsedTime.db_content.userInfo.dateOld));
         }
      }).fail(function(e) {
         console.log(e);
      });
   },

   getTime: function(date_old, date_now) {
      date_old = date_old || new Date(); //.toLocaleString('en-US', { hour12: false });
      date_now = date_now || new Date(); //.toLocaleString('en-US', { hour12: false });
      //date_old = date_old.split("/").swap(0, 1).join("/");
      //date_now = date_now.split("/").swap(0, 1).join("/");
      date_old = new Date(date_old);
      date_now = new Date(date_now);

      var seconds = Math.floor((date_now - (date_old)) / 1000),
         minutes = Math.floor(seconds / 60),
         hours = Math.floor(minutes / 60),
         days = Math.floor(hours / 24);

      hours = hours - (days * 24);
      minutes = minutes - (days * 24 * 60) - (hours * 60);
      seconds = seconds - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60);
      //console.log(days + "d " + hours + "h " + minutes + "m " + seconds + "s ");
      return ((days) ? days + "d " : "") + ((hours) ? hours + "h " : "") + ((minutes) ? minutes + "m " : "") + ((seconds) ? seconds + "s " : "");
   }
};

elapsedTime.initialize();



Wamki
avatar

Wamki
Usuário avançado

Masculino
Inscrito dia : 22/10/2015
Mensagens : 332
Pontos Ativos : 450

http://infostyle.forumbrasil.net

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 15:56

Okay, mas como eu devo criar os campos nos perfis.
e o que eu devo fazer neles assim que os criar?
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 16:42

UP!
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Wamki em Qua 18 Nov 2015 - 18:00

Olá,

Crie dois campos de texto, com qualquer nome, depois me informe já criou que eu possa ajudar na configuração do código, e quero dizer está infringindo uns regras do suporte.

Sugiro que re-leia as regras de novo, que é proibido up antes de passar 24 horas.



Wamki
avatar

Wamki
Usuário avançado

Masculino
Inscrito dia : 22/10/2015
Mensagens : 332
Pontos Ativos : 450

http://infostyle.forumbrasil.net

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qua 18 Nov 2015 - 18:59

Já criei:

1º : Tempo Online

2º: Info Time
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Wamki em Qua 18 Nov 2015 - 23:42

Olá,

Mas senhor.., eu acessei neste link do perfil, visto que não aparecendo os campos que você citou acima.
Flecha ajudeiros http://pokemonspacesoul.forumeiros.com/u1

Wamki




Perdão meu, eu não reparei que quando fica vazio, não aparece no perfil, agora sim corrigi acessando meu perfil, altere o código pra este:

Código:

/*******************************************************************************************************
 * Application: elapsedTime (Total Time Spent On Forums)
 * Description: Will show how much time each member spends logged into the site.
 * Version: RC1 - Beta tester only!
 * Made and Optimizations by JScript - 2015/02/18
 * Copyright (c) 2015 JScript <jscriptbrasil at live dot com>
 * This work is free. You can redistribute it and/or modify it
 * under the terms of the WTFPL, Version 2
********************************************************************************************************
-
Variables that can be changed by the user:
1- tTimeOut
2- checkTime
3- fieldName
Note: For those variables "tTimeout" and "checkTime" ->
      - to avoid the "Request Limit" the lowest value should be 10 seconds and 30 seconds respectively!
*/
var elapsedTime = {
  autor:      'JScript',
  version:  '1.02202015-jq1.9.1',
  codename:  'Narmer (Sheikh Muftah)',

  /**
    * Related to database.
    **/
  fieldName:      'Time Online',
  field_id:      14,
  fd_description: 'Will show how much time each member spends logged into the site.',
  db_field:      13,
  db_content:    '',
  db_description: 'Database to store the data of the module elapsedTime!',
  db_url:      '/admin/index.forum?part=users_groups&sub=users&mode=avatar_profil2&extended_admin=1&tid=',
  response:      '',
  evalTextarea:  'jQuery(\'label:contains("elapsedTime_DB"), span:contains("elapsedTime_DB"), dt:contains("elapsedTime_DB")\', response).closest("dl, tr").find("textarea")',

  db_default: {
      appInfo: {
        module:      'elapsedTime_DB',
        description: 'Database to store the data of the module elapsedTime!',
        author:    'JScript',
        version:    'RC1 b',
        release:    '2015/02/18'
      },
      userInfo: {
        isOnline:    1,
        dateOld:    Number(new Date()),
        dateNow:    Number(new Date()),
        dateSpent:  ''
      }
  },

  /**
    * Related to intervals.
    **/
  lInterval:    10,
  tTimeOut:    10000,
  checkTime:    30000,
  setLoop:    0,

  // other variables...
  evalTID: 'jQuery(\'a[href*="tid="]\').attr("href").split("tid=")[1].split("&")[0]',
  TID: 0,

  /**
    * JavaScript/jQuery functions
    */
  initialize: function() {
      $(function() {
        return (!_userdata.session_logged_in) ? false : elapsedTime.setup();
      });
  },

  setup: function() {
      elapsedTime.TID = eval(elapsedTime.evalTID);
      /**
      * First checks if the database exists!
      **/
      jQuery.get('/profile?mode=editprofile', function(response) {
        elapsedTime.response = eval(elapsedTime.evalTextarea);

        // If the database does not exist, then an administrator will create it now!
        if ((!elapsedTime.response.length) && (_userdata.user_level == 1)) {
            elapsedTime.async(false);
            jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
              /* Post action */
              action:                'add_field',
              id:                  0,
              type:                  0,
              action:                'configuration_final',
              list_type_field:          2,
              field_name:            'elapsedTime_DB',
              field_desc:            elapsedTime.db_description + ' - Made by JScript, 2015/02/18',
              field_oblig:            0,
              field_display_profil:      1,
              list_field_type_view:      0,
              list_auth_field_himself:    1,
              list_field_view:        0,
              list_separator:            0,
              field_type_2_lng_max:      15000,
              submit:                1,
              field_type_11_max_before:    14,
              field_type_11_max_after:    6
            }).done(function() {
              jQuery.get('/profile?mode=editprofile', function(response) {
                  elapsedTime.response = eval(elapsedTime.evalTextarea);
              });
            });
            jQuery.post(elapsedTime.db_url + elapsedTime.TID, { /* <- Parameters! */
              /* Post action */
              action:                'add_field',
              id:                  0,
              type:                  0,
              action:                'configuration_final',
              list_type_field:          13,
              field_name:            elapsedTime.fieldName,
              field_desc:            elapsedTime.fd_description + ' - Made by JScript, 2015/02/18',
              field_oblig:            0,
              field_display_message:      1,
              field_display_profil:      1,
              list_field_type_view:      0,
              list_auth_field_himself:  1,
              list_field_view:          -1,
              list_separator:          1,
              field_type_2_lng_max:      15000,
              submit:                1,
              field_type_11_max_before:  14,
              field_type_11_max_after:  6
            }).done(function(e) {
              console.log(e)
            });
            elapsedTime.async(true);
        }

        if (!elapsedTime.response.length) {
            return false;
        }

        elapsedTime.db_field = elapsedTime.response.attr('id');

        if (elapsedTime.response.val().length) {
            elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));
        }

        if ((!elapsedTime.response.val().length) || (!elapsedTime.db_content.userInfo.isOnline)) {
            elapsedTime.db_content = elapsedTime.db_default;

            elapsedTime.async(false);
              elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
            elapsedTime.async(true);

            elapsedTime.updateTime();
        }

        if (document.getElementById('fa_welcome') !== null) {
            jQuery('a[href$="logout=1"]').attr('href', jQuery('#logout').attr('href'));
        }
        jQuery('a[href*="logout=1"]').click(function(event) {
            elapsedTime.TID = eval(elapsedTime.evalTID);
            elapsedTime.db_content.userInfo.isOnline = 0;

            elapsedTime.async(false);
              elapsedTime.dataSave(elapsedTime.db_field, JSON.stringify(elapsedTime.db_content).replace(/"/g, "'"));
            elapsedTime.async(true);
        });
        /**
        * Writes the current time in the profile field...
        **/
        setTimeout(function() {
            setInterval(function() {
              elapsedTime.updateTime();
            }, elapsedTime.checkTime);
        }, elapsedTime.tTimeOut);

      }).fail(function(e) {
        console.log(e);
      });
  },

  async: function(mode) {
      jQuery.ajaxSetup({
        async: mode
      });
  },

  dataSave: function(field, content) {
      jQuery.post("/ajax_profile.forum?jsoncallback=?", {
        id: field.split("_")[3],
        user: _userdata.user_id,
        active: "1",
        content: '[["' + field + '", "' + content + '"]]',
        tid: elapsedTime.TID
      }, function(data) {
        // OK!
      }, "json").fail(function(e) {
        console.log(e);
      });
  },

  updateTime: function() {
      elapsedTime.TID = eval(elapsedTime.evalTID);

      jQuery.get('/profile?mode=editprofile', function(response) {
        elapsedTime.response = jQuery('label:contains("' + elapsedTime.fieldName + '"), span:contains("' + elapsedTime.fieldName + '"), dt:contains("' + elapsedTime.fieldName + '")', response).closest('dl, tr').find('input');
        elapsedTime.field_id = elapsedTime.response.attr('id');

        if (elapsedTime.response.length) {
            elapsedTime.response = eval(elapsedTime.evalTextarea);
            elapsedTime.db_content = JSON.parse(elapsedTime.response.val().replace(/'/g, '"'));

            elapsedTime.dataSave(elapsedTime.field_id, elapsedTime.getTime(elapsedTime.db_content.userInfo.dateOld));
        }
      }).fail(function(e) {
        console.log(e);
      });
  },

  getTime: function(date_old, date_now) {
      date_old = date_old || new Date(); //.toLocaleString('en-US', { hour12: false });
      date_now = date_now || new Date(); //.toLocaleString('en-US', { hour12: false });
      //date_old = date_old.split("/").swap(0, 1).join("/");
      //date_now = date_now.split("/").swap(0, 1).join("/");
      date_old = new Date(date_old);
      date_now = new Date(date_now);

      var seconds = Math.floor((date_now - (date_old)) / 1000),
        minutes = Math.floor(seconds / 60),
        hours = Math.floor(minutes / 60),
        days = Math.floor(hours / 24);

      hours = hours - (days * 24);
      minutes = minutes - (days * 24 * 60) - (hours * 60);
      seconds = seconds - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60);
      http://console.log(days + "d " + hours + "h " + minutes + "m " + seconds + "s ");
      return ((days) ? days + "d " : "") + ((hours) ? hours + "h " : "") + ((minutes) ? minutes + "m " : "") + ((seconds) ? seconds + "s " : "");
  }
};

elapsedTime.initialize();
avatar

Wamki
Usuário avançado

Masculino
Inscrito dia : 22/10/2015
Mensagens : 332
Pontos Ativos : 450

http://infostyle.forumbrasil.net

Resolvido Re: Código para mostrar o tempo online do usuário

Mensagem por Allenkar_ em Qui 19 Nov 2015 - 14:52

Funcionou muito obrigado!
avatar

Allenkar_
Nível 7

Masculino
Inscrito dia : 01/05/2014
Mensagens : 90
Pontos Ativos : 146

http://poke-mind.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum