Autor Tópico: Tempo de sessão caindo constante  (Lida 275 vezes)

danyx

  • Intermediário
  • ***
  • Mensagens: 114
    • Email
Tempo de sessão caindo constante
« Online: Julho 12, 2017, 03:46:27 pm »
Boa tarde Pessoal,

Tenho um sistema onde cliente fica em uma tela olhando o calendário, por isso, precisa ficar umas 10horas o sistema sem fazer logout automático.

setei no OnApplicationInit

/ Define o limite de tempo do da sessão do PHP em 6 horas /
ini_set("session.gc_maxlifetime", "21600");
/*---------------------------------------------------------*/

coloquei 98600 para não ter problema mas infelizmente em 2 horas cai a sessão.

Att,

Eduardo Henrique Belinatti

  • Intermediário
  • ***
  • Mensagens: 126
    • Prefeitura Municipal de Limeira
    • Email
Re:Tempo de sessão caindo constante
« Responder #1 Online: Setembro 06, 2017, 04:16:03 pm »
Seria bom observar qual o valor do atributo session.gc_maxlifetime através da função phpinfo() a para verificar qual é o valor default e calcular se realmente equivalem a 2 horas.


Eduardo Henrique Belinatti
Analista Programador de Sistemas
ehbelinatti@gmail.com

Haroldo

  • Expert
  • *****
  • Mensagens: 7540
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Tempo de sessão caindo constante
« Responder #2 Online: Setembro 06, 2017, 04:51:04 pm »
Se você tiver um javascript ou jquery acessando um script php de tempos em tempos a sessão não expira.

Uso isso nesse exemplo abaixo e já deixei de um dia para o outro e funciona:

https://v9.infinitusweb.com.br/scriptcase/app/forum_sc/useronline_login

Eduardo Henrique Belinatti

  • Intermediário
  • ***
  • Mensagens: 126
    • Prefeitura Municipal de Limeira
    • Email
Re:Tempo de sessão caindo constante
« Responder #3 Online: Setembro 12, 2017, 02:41:44 pm »
Haroldo vi seu exemplo, muito bacana parametrizar o tempo.
Utilizei a função setInterval() em um sistema para realizar o logout após 20 minutos mas com uma mensagem de confirmação sendo executada:

Código: [Selecionar]
var t = 1200;

function myTimer() {
  var r = confirm('Deseja continuar no Sistema?');
  if (r == true) {
    t = 1200;
    return;
  } else {
    location.href='../blk_sair/blk_sair.php';
  }
}
</script>

<div id='tempo' style='text-align:left;font-family:Arial;font-size:x-small;float:left'></div>


<script>

function FormataTempo(){
  //Horas
  if(t<3600){
    h=0;
  } else { h=Math.floor(t/3600); }
 
  //Minutos
  m=t-(h*3600);
  if(m>59){ms=Math.floor(m/60)}else{ms=0;}
 
  //Segundos 
  s=t-(ms*60);
 
  return h+'h(s)'+ms+'min(s)'+s+'(s)';
}

var myVar2=setInterval(function () {myRelogio()}, 1000);

function myRelogio() {
  t=t-1;
  tx = FormataTempo();
  x='Sessão expira em: <font color=blue>' + tx + '</font>' ;
  document.getElementById('tempo').innerHTML = x;
  if(t==0){
    myTimer();
  }
}













Eduardo Henrique Belinatti
Analista Programador de Sistemas
ehbelinatti@gmail.com

Haroldo

  • Expert
  • *****
  • Mensagens: 7540
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Tempo de sessão caindo constante
« Responder #4 Online: Setembro 12, 2017, 02:50:45 pm »
Muito bom Eduardo.

Haroldo vi seu exemplo, muito bacana parametrizar o tempo.
Utilizei a função setInterval() em um sistema para realizar o logout após 20 minutos mas com uma mensagem de confirmação sendo executada:

Código: [Selecionar]
var t = 1200;

function myTimer() {
  var r = confirm('Deseja continuar no Sistema?');
  if (r == true) {
    t = 1200;
    return;
  } else {
    location.href='../blk_sair/blk_sair.php';
  }
}
</script>

<div id='tempo' style='text-align:left;font-family:Arial;font-size:x-small;float:left'></div>


<script>

function FormataTempo(){
  //Horas
  if(t<3600){
    h=0;
  } else { h=Math.floor(t/3600); }
 
  //Minutos
  m=t-(h*3600);
  if(m>59){ms=Math.floor(m/60)}else{ms=0;}
 
  //Segundos 
  s=t-(ms*60);
 
  return h+'h(s)'+ms+'min(s)'+s+'(s)';
}

var myVar2=setInterval(function () {myRelogio()}, 1000);

function myRelogio() {
  t=t-1;
  tx = FormataTempo();
  x='Sessão expira em: <font color=blue>' + tx + '</font>' ;
  document.getElementById('tempo').innerHTML = x;
  if(t==0){
    myTimer();
  }
}















ivonielson

  • Novato
  • *
  • Mensagens: 1
    • Email
Re:Tempo de sessão caindo constante
« Responder #5 Online: Setembro 28, 2017, 07:46:51 pm »
Tem como compartilhar o codigo javascript do logout parametrizado

ricardosenaspbr

  • Intermediário
  • ***
  • Mensagens: 112
  • Non scholae, sed vitae discimus
    • Email
Re:Tempo de sessão caindo constante
« Responder #6 Online: Outubro 06, 2017, 11:54:43 am »
Se você tiver um javascript ou jquery acessando um script php de tempos em tempos a sessão não expira.

Uso isso nesse exemplo abaixo e já deixei de um dia para o outro e funciona:

https://v9.infinitusweb.com.br/scriptcase/app/forum_sc/useronline_login
Se você tiver um javascript ou jquery acessando um script php de tempos em tempos a sessão não expira.

Uso isso nesse exemplo abaixo e já deixei de um dia para o outro e funciona:

https://v9.infinitusweb.com.br/scriptcase/app/forum_sc/useronline_login


Bom dia, tentei enviar via pessoal ..deu bloqueado...

Qual o valor dessa app, para meu estudo ?

obrigado
atenciosamente,

Ricardo Sena
Analista de T.I.
V. 8.1
"Non scholae, sed vitae discimus"(Não estudamos para a escola, mas para a vida)

Eduardo Henrique Belinatti

  • Intermediário
  • ***
  • Mensagens: 126
    • Prefeitura Municipal de Limeira
    • Email
Re:Tempo de sessão caindo constante
« Responder #7 Online: Outubro 06, 2017, 12:39:52 pm »
Tem como compartilhar o codigo javascript do logout parametrizado

Ivonielson:

Não entendi, o que precisa parametrizar: são dados no momento do logout ou parametrizar o tempo para realização do logout?

Caso necessite adicionar parâmetros após o logout é possível utilizar QueryString blk_sair.php?parametro=valor mas se já estiver utilizando estes dados armazenados em SESSIONs poderá realizar as ações na própria página do logout.

Agora se for o tempo, via JavaScript, depende de como foi informado.
Pode ser armazenado numa tabela do banco de dados, ser recuperado por uma Query após o login e atribuir para a variável JavaScript:

$v_cmd = "SELECT TEMPO_ATIVIDADE FROM TABELA_PARAMETRIZACAO";
sc_lookup(ds, $v_cmd, "Conexao");
$v_tempo={ds[0][0]};

?>

<script>
var t_fixo = <?php echo $v_tempo ?>;
var tempo = t_fixo;

function myTimer() {
  var r = confirm('Deseja continuar no Sistema?');
  if (r == true) {
    tempo = tempo_fixo; //Reseta o tempo
    return;
  } else {
    location.href='../blk_sair/blk_sair.php';
  }
}
</script>

<div id='tempo' style='text-align:left;font-family:Arial;font-size:x-small;float:left'></div>


<script>

function FormataTempo(){
  //Horas
  if(tempo<3600){
    h=0;
  } else { h=Math.floor(tempo/3600); }
 
  //Minutos
  m=tempo-(h*3600);
  if(m>59){ms=Math.floor(m/60)}else{ms=0;}
 
  //Segundos 
  s=tempo-(ms*60);
 
  return h+'h(s)'+ms+'min(s)'+s+'(s)';
}

var myVar2=setInterval(function () {myRelogio()}, 1000);

function myRelogio() {
  tempo=tempo-1;
  tx = FormataTempo();
  x='Sessão expira em: <font color=blue>' + tx + '</font>' ;
  document.getElementById('tempo').innerHTML = x;
  if(tempo==0){
    myTimer();
  }
}
<?php
« Última modificação: Outubro 06, 2017, 12:41:41 pm por Eduardo Henrique Belinatti »
Eduardo Henrique Belinatti
Analista Programador de Sistemas
ehbelinatti@gmail.com