Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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';
}>
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...
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';
}wolfphw valeu pela dica, deu certinho aqui.
valeu mesmo
troca isso
if($segundos > TEMPO_LOGADO) {
por isso
if($segundos > 10) {