Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JapahReturN

Como encerrar a sessão(logado), depois de um tempo?

Recommended Posts

Boa tarde!

 

Você pode guardar o tempo da última atividade do usuário na $_SESSION. E a cada vez que ele tenta fazer uma requisição ele verifica se o time() é maior que 3600 segundos (1 hora).

 

Ficou claro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de 1 hora mais ou menos o sistema desloga automaticamente

 

Da uma lida:

http://php.net/manual/pt_BR/function.session-start.php

<?php
// Envia o cookie persistente que dura um dia
session_start([
    'cookie_lifetime' => 86400,
]);

Nunca testei, mas aparentemente funciona.

 

 

Outra opção é salvar assim que o usuario logar numa tabela o timestamp de acesso DATETIME -> NOW() + session_id()  e fazer uma rotina/cron q rode de min em min verificando se após aquela Hora alguém ainda está ativo, caso esteja simplesmente encerra aquela sessão.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma opção seria sempre chamar uma rotina durante a verificação de sessão.

 

Ex:

<?php

function isDeletedSesseon(){
	
	//Ex com retorno do banco "SELECT id FROM user where dead_session = 1";
	if($user['id'] == $_SESSION['id']){
		session_destroy();
	}
}

Basicamente você chamaria essa função/método no ato do seu Login, se corresponder a clausula where você força o user a deslogar ;)

 

Ps:

o WHERE dead_session pode ser alterado para o que você quiser...

 

Ex se fosse um DATETIME você adicionaria algo como exempliquei no post acima (DATETIME + NOW() NO ATO DO primeiro acesso).

 

Passou 1h?! 

session_destroy()!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria algo sem utilizar o banco de dados...

 

Na minha session após o login, também salvaria o timestamp do login.
Cada refresh da pagina, ou seja, a cada novo teste de session eu checharia se ja se passaram uma hora.
Se o tempo for maior que os 3600segundos, session_destroy sem choro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.