Ir para conteúdo

POWERED BY:

Arquivado

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

Beto Lima

[Resolvido] expirar sessão

Recommended Posts

Pessoal preciso fazer com que a sessão expire caso não haja atividade por 10 minutos. Então tentei desta forma:

 

após receber o post do login

 

$nome = $_POST["nome"];

select blablabla where nome = $nome

se bateu a informação então continua..

 

session_start();
$_SESSION['tempo_permitido'] = mktime(date('H:i:s'));
$_SESSION['nome'] = $nome;

após isso redireciona pra index...

 

já na index:

 

session_start();
$agora= mktime(date('H:i:s'));
$segundos=(is_numeric($_SESSION['tempo_permitido']) and is_numeric($agora)) ? ($agora-$_SESSION['tempo_permitido']):false;
define('TEMPO_LOGADO',10);

if($segundos > TEMPO_LOGADO) {
			print 'Tempo esgotado, efetue login novamente.';
			$_SESSION['nome'] = NULL;
			unset($_SESSION['nome']);
			session_destroy();
} else {
  echo 'ainda logado';
}

O problema é que ele destroy a sessão mesmo usando a aplicação.

Preciso que ele destrua a sessão somente quando o sistema ficar inativo por 10 minutos.

 

ja tentei usando o session_cache_expire + session_cache_limiter('private') e nada.

Alguém tem uma solução?

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca isso

if($segundos > TEMPO_LOGADO) {

 

 

por isso

if($segundos > 10) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq ao invez de você colocar o tempo usando mktime(date('H:i:s')) você não usa apenas time() seria bem mais facil...

 

Que o time ele tras cada numero como 1 segundo.. dai eh soh pegar 10 * 60 = 600 segundos...

 

 

session_start();
$segundos = time()-$_SESSION['tempo_permitido'];

if ($segundos > 600) {
  print 'Tempo esgotado, efetue login novamente.';
  $_SESSION['nome'] = NULL;
  unset($_SESSION['nome']);
  session_destroy();
} else {
  echo 'ainda logado';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq ao invez de você colocar o tempo usando mktime(date('H:i:s')) você não usa apenas time() seria bem mais facil...

 

Que o time ele tras cada numero como 1 segundo.. dai eh soh pegar 10 * 60 = 600 segundos...

 

 

session_start();
$segundos = time()-$_SESSION['tempo_permitido'];

if ($segundos > 600) {
  print 'Tempo esgotado, efetue login novamente.';
  $_SESSION['nome'] = NULL;
  unset($_SESSION['nome']);
  session_destroy();
} else {
  echo 'ainda logado';
}

wolfphw, desta maneira ele não vai acabar com a sessão mesmo o usuário manuseando o sistema?

A idéia é destrui a sessão somente se o vivente não usar a página pelo tempo limite de 10 minutos ou 20 minutos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, pq a cada execussão que você ficar no sistema ele atualiza o time do usuario

 

tipo..

 

session_start();
$segundos = time()-$_SESSION['tempo_permitido'];

if ($segundos > 600) {
  print 'Tempo esgotado, efetue login novamente.';
  $_SESSION['nome'] = NULL;
  unset($_SESSION['nome']);
  session_destroy();
} else {
  $_SESSION['tempo_permitido'] = time(); // <--- colocando isso aqui resolve isso.. que dai ele atualiza o time
  echo 'ainda logado';
}

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.