Definir tempo vida de uma Sessão em PHP

PHP

01/09/2021

Estou tentando definir o tempo de vida das minhas sessões, mas nada do que já vi até agora deu certo.

Defini o tempo de 1 minuto e fiz diversos testes pra ver se funciona:

#Teste 1 - Setei o cache para 1 minuto
session_cache_expire(1);
session_start();


#Teste 2 - Setei o Lifetime do cookie para 60 segundos
define("LIFETIME", 60);
session_set_cookie_params(LIFETIME);
session_start();


#Teste 3 - Setei diretamente no php.ini o maxlifetime e o cookie para 60 segundos
session.gc_maxlifetime = 60
session.cookie_lifetime = 60


Nada deu certo até agora, alguém poderia me ajudar por favor?
Isabela

Isabela

Curtidas 0

Melhor post

Yuri Aguiar

Yuri Aguiar

01/09/2021

Fala comigo Isabela... tudo bem ?

O tempo em minutos é calculado em segundo, ou seja, para cada 01min equivale a 60seg.
Então para definir um tempo limite nas sessões, use um registro de data e hora pra indicar a hora da última atividade / solicitação:

if(isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {

    //A última solicitação foi há mais de 30 minutos
    session_unset();     //Variável para o tempo de execução 
    session_destroy();   //Destruir os dados da sessão no armazenamento
}

//Atualizar o registro de data e hora da última atividade
$_SESSION['LAST_ACTIVITY'] = time(); 


Vale ressaltar que session.gc_maxlifetime e session.cookie_lifetime não são confiáveis.
Espero que te ajude e que funcione kk abraços...
GOSTEI 1

Mais Respostas

Isabela

Isabela

01/09/2021

Ei @Yuri Aguiar
Obrigada pela atenção ;)

Então, eu testei seu código, ele funciona apenas se eu quiser de fato testar por 1 minuto ou menos do que vem por default. Porém, eu testei em seguida com 3600, ou seja, 1 hora e a sessão foi encerrada antes deste tempo, mantendo seu tempo de vida default.
Não sei o que fazer :(
GOSTEI 0
Yuri Aguiar

Yuri Aguiar

01/09/2021

Opa...
Quando lembra que você alterou no php.ini?

#Teste 3 - Setei diretamente no php.ini o maxlifetime e o cookie para 60 segundos
session.gc_maxlifetime = 60
session.cookie_lifetime = 60


Não sei se você tentou alterar aumentando o tempo no arquivo.
Caso não tenha configurado, pode ser que ele esteja limitando no sua aplicação local.


GOSTEI 1
Isabela

Isabela

01/09/2021

Oi Yuri, desculpe a demora...

Ainda não resolvi esse troço =/

Então, eu já fiz de tudoooooo...

Já configurei o php.ini, já configurei o servidor (hostgator), já fiz aquelas configurações acima e NADA!

Tudo que eu preciso é aumentar o tempo de sessão da minha aplicação. Eu preciso que ela fique ativa (logada) por 24 horas.
GOSTEI 0
Yuri Aguiar

Yuri Aguiar

01/09/2021

Opa, boa noite Isa! Dependendo, seria melhor e até mais fácil para você realizar o controle através do próprio banco de dados, porque essas variáveis de sessões apesar de serem consideradas seguras por conta de serem server-side, depende de como é configurado os dados armazenados nos cookies serão de fácil acesso.

Então... para qual finalidade você precisa realizar isso?
GOSTEI 0
POSTAR