Autor Tópico: [RESOLVIDO] Como obter o tempo de uma sessão para mostrar ao usuário?  (Lida 147 vezes)

JamTC

  • Iniciante
  • **
  • Mensagens: 97
[RESOLVIDO] Como obter o tempo de uma sessão para mostrar ao usuário?
« Online: Fevereiro 21, 2019, 11:19:26 am »
Olá e bom dia a todos!

Gostaria de saber se o SC tem alguma macro para obter o tempo de uma sessão para que eu possa mostrar ao usuário e também para poder calcular o tempo restante daquela sessão.

Existe essa macro?
Se não, como obter essas informações?

Antecipadamente agradeço,

JamTC
:?
« Última modificação: Fevereiro 22, 2019, 10:29:03 am por JamTC »

Haroldo

  • Expert
  • *****
  • Mensagens: 8981
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #1 Online: Fevereiro 21, 2019, 11:25:35 am »
Todas as macros são descritas no WebHelp da ferramenta.


Sessão quem controla é o php.

Em uma googlada:
https://forum.imasters.com.br/topic/424529-resolvido%C2%A0exibir-tempo-restande-para-sess%C3%A3o-expirar/

Mas não seria mais fácil aumentar o tempo de sessão?  Se o usuário estiver com a tela aberta não sei qual a necessidade de exibir o tempo de sessão.
É realmente não entendi a necessidade de exibir o tempo de sessão restante.



JamTC

  • Iniciante
  • **
  • Mensagens: 97
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #2 Online: Fevereiro 21, 2019, 11:35:16 am »
Oi Haroldo, bom dia!

Como sempre rápido e pronto a ajudar :)

Eis os motivos:

1. Necessidade de mostrar ao usuário o tempo que ele terá para trabalhar sem ter a sua sessão expirada;
2. Mostrar o tempo inicial disponível e o tempo restante para alertá-lo.

Isso porque quando coloco os sistemas em produção as vezes não sei como está o PHP.ini do provedor e, dessa forma, também irá me alertar para fazer a modificação do "PHP.ini".

[]s.

JamTC
;)
« Última modificação: Fevereiro 21, 2019, 11:40:37 am por JamTC »

Clarck

  • Intermediário
  • ***
  • Mensagens: 110
    • Email
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #3 Online: Fevereiro 21, 2019, 02:37:11 pm »

Eis os motivos:

1. Necessidade de mostrar ao usuário o tempo que ele terá para trabalhar sem ter a sua sessão expirada;
2. Mostrar o tempo inicial disponível e o tempo restante para alertá-lo.

Isso porque quando coloco os sistemas em produção as vezes não sei como está o PHP.ini do provedor e, dessa forma, também irá me alertar para fazer a modificação do "PHP.ini".

[]s.

JamTC
;)

pra saber o tempo de sessão definido no php.ini use o comando abaixo:
ini_get("session.gc_maxlifetime")
geralmente o padrão é 1440, q dá 24 minutos.

pra mostrar um countdown deves usar o menu.
não sei se usas rodapé no teu menu, mas é bom usar.
supondo q usas um rodapé no menu de 2 ou 3 colunas.
em uma delas, ex.: LIN1_COL1
selecione Valor e defina o valor com o seguinte:
<div id='cronometro'></div><script>iniciaLogout();</script>

vá em Eventos>onLoad do menu
e cole isso:
?>
<script>
var hora;
var muda = 1;
var tempo = new Number();
tempo = <?php echo ini_get("session.gc_maxlifetime") ?>;
function iniciaLogout(){
   if((tempo - 1) >= 0){
      var min = parseInt(tempo/60);
      var seg = tempo%60;
      if(min < 10){
         min = '0'+min;
         min = min.substr(0, 2);
      }
      if(seg <=9){
         seg = "0"+seg;
      }
      hora = min + ':' + seg;
      $("#cronometro").html(hora);
      setTimeout('iniciaLogout()',1000);
      if((tempo - 1) <= 25){
         if(muda == 1){
            $("#cronometro").css('color', 'red').css('font-weight', 'bold');
            muda = 0;
         }else{
            $("#cronometro").css('color', 'white').css('font-weight', 'normal');
            muda = 1;
         }
      }
      tempo--;
   }else{
      $("#cronometro").html('00:00');
      //aqui vc pode adicionar algo interativo
      //ou pode fazer logout automatico assim: $('a#id_do_item_sair_que_esta_no_menu').click();
   }
}
</script>
<?php

simples e prático, tens um cronometro da sessão.

Abraço.
« Última modificação: Fevereiro 22, 2019, 10:47:04 am por Clarck »

JamTC

  • Iniciante
  • **
  • Mensagens: 97
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #4 Online: Fevereiro 21, 2019, 03:33:40 pm »
Boa tarde Clarck,

Muito obrigado pela sua postagem. Vou testar e implementar sua dica e depois posto aqui o resultado.

Valeu!

JamTC
:D

JamTC

  • Iniciante
  • **
  • Mensagens: 97
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #5 Online: Fevereiro 22, 2019, 10:14:54 am »
Olá e bom dia a todos!

Caro Clarck,

Informo que testei e implementei sua solução postada acima e tudo funcionou perfeitamente.

Mas uma vez muito obrigado pela solução.

[]s.

JamTC
:D

Clarck

  • Intermediário
  • ***
  • Mensagens: 110
    • Email
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #6 Online: Fevereiro 22, 2019, 10:16:03 am »
Olá e bom dia a todos!

Caro Clarck,

Informo que testei e implementei sua solução postada acima e tudo funcionou perfeitamente.

Mas uma vez muito obrigado pela solução.

[]s.

JamTC
:D

Show de bola...

Agora coloca o Topico como resolvido.

Clarck

  • Intermediário
  • ***
  • Mensagens: 110
    • Email
Re:Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #7 Online: Março 08, 2019, 02:02:30 pm »
Olá e bom dia a todos!

Caro Clarck,

Informo que testei e implementei sua solução postada acima e tudo funcionou perfeitamente.

Mas uma vez muito obrigado pela solução.

[]s.

JamTC
:D

Só a titulo de informação. Pra complementar a solução.

Eu sei que já foi resolvido, mas se você criar um modulo segurança novo,
vais ver que recentemente a NetMake colocou uma opção nova,
que trata do logout ao termino do tempo de sessão...
e até podes escolher com logout direto ou com mensagem de confirmação.

Grande abraço.

Joelton

  • Expert
  • *****
  • Mensagens: 874
Re:[RESOLVIDO] Como obter o tempo de uma sessão para mostrar ao usuário?
« Responder #8 Online: Março 08, 2019, 05:00:03 pm »
Olá e bom dia a todos!

Caro Clarck,

Informo que testei e implementei sua solução postada acima e tudo funcionou perfeitamente.

Mas uma vez muito obrigado pela solução.

[]s.

JamTC
:D

Só a titulo de informação. Pra complementar a solução.

Eu sei que já foi resolvido, mas se você criar um modulo segurança novo,
vais ver que recentemente a NetMake colocou uma opção nova,
que trata do logout ao termino do tempo de sessão...
e até podes escolher com logout direto ou com mensagem de confirmação.

Grande abraço.

Bem lembrado sobre "recentemente a NetMake colocou uma opção nova,
que trata do logout ao termino do tempo de sessão...", apenas para colaborar com o assunto, eu inserir sem criar um novo módulo, manualmente a macro no evento onScriptInit do login...

//REDIRECIONA APÓS CAIR A SESSÃO - novidade da v9.3
sc_apl_default("ap_Login","M"); //se for "R" redireciona sem perguntar