Beto Lima 0 Denunciar post Postado Setembro 9, 2010 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
wolfphw 60 Denunciar post Postado Setembro 9, 2010 troca isso if($segundos > TEMPO_LOGADO) { por isso if($segundos > 10) { Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Setembro 9, 2010 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
Beto Lima 0 Denunciar post Postado Setembro 9, 2010 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
wolfphw 60 Denunciar post Postado Setembro 9, 2010 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
Beto Lima 0 Denunciar post Postado Setembro 9, 2010 wolfphw valeu pela dica, deu certinho aqui. valeu mesmo Compartilhar este post Link para o post Compartilhar em outros sites