Logo Hardware.com.br
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas

[Resolvido] Timer para expirar sessão em php.

#1 Por Flavio_vivin... 15/10/2015 - 14:07
Olá, pessoal!

Alguém saberia me orientar como eu faço para colocar algum tipo de timer em meu sistema de login, para que após um determinado tempo sem ação do usuário a sessão expire?

Exemplo: Usuário acesso o sistema e se o mesmo ficar uns 5 minutos sem nenhuma ação no sistema a sessão criada, no login, venha a expirar.

Desde já agradeço a atenção de todos.
Até+
Responder
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#2 Por Fergo
18/10/2015 - 02:28
Grave o horário atual em uma variável de sessão. Ao carregar cada página, verifique o horário atual com o horário salvo nessa variável e se essa diferença for maior que 5 minutos, ao invés de exibir a página, encerre a sessão do usuário.

Em um "pseudo-código", com funções fictícias, pois já faz tempo que não mexo com PHP e não lembro exatamente o nome delas:
[code=php]
//Estou supondo que a função Time() retorne uma data em UnixTime, por isso aquela multiplicação no "if"
//Pra ficar mais claro,

//Pega o horario atual
horarioAtual = Time();

if ((horarioAtual - $_SESSION['horarioSalvo']) > (5 * 60 * 1000))
//Coloque aqui o codigo para encerrar a sessao
else
//Aqui vai o codigo para exibir a pagina normalmente

//Atualiza a variavel do horario salvo para o horario atual
$_SESSION['horarioSalvo'] = horarioAtual;
[/code]

Se quiser algo mais dinâmico, como aqueles contadores em tempo real tipo dos sites de Internet Banking que ficam mostrando "Sua sessão vai expirar em..." e encerram a sessão independente do usuário tentar acessar uma nova página, terá que usar JavaScript.
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
Flavio_vivinho
Flavio_vivin... Geek Registrado
2.5K Mensagens 173 Curtidas
#3 Por Flavio_vivin...
19/10/2015 - 18:30
Fergo disse:
Grave o horário atual em uma variável de sessão. Ao carregar cada página, verifique o horário atual com o horário salvo nessa variável e se essa diferença for maior que 5 minutos, ao invés de exibir a página, encerre a sessão do usuário.

Em um "pseudo-código", com funções fictícias, pois já faz tempo que não mexo com PHP e não lembro exatamente o nome delas:
[code=php]
//Estou supondo que a função Time() retorne uma data em UnixTime, por isso aquela multiplicação no "if"
//Pra ficar mais claro,

//Pega o horario atual
horarioAtual = Time();

if ((horarioAtual - $_SESSION['horarioSalvo']) > (5 * 60 * 1000))
//Coloque aqui o codigo para encerrar a sessao
else
//Aqui vai o codigo para exibir a pagina normalmente

//Atualiza a variavel do horario salvo para o horario atual
$_SESSION['horarioSalvo'] = horarioAtual;
[/code]

Se quiser algo mais dinâmico, como aqueles contadores em tempo real tipo dos sites de Internet Banking que ficam mostrando "Sua sessão vai expirar em..." e encerram a sessão independente do usuário tentar acessar uma nova página, terá que usar JavaScript.



Fergo, sua lógica tem lógica rsrsrs.
No PHP montei um código dessa forma e funciona certinho. Preferia fazer isto no PHP pois creio que seria mais seguro, pelo fato de que o usuário poderia desabilitar o JavaScript do navegador se fosse feito em JavaScript.

O Marcos Andrade22 também me passou um código em JavaScript que ainda vou testar que trabalha monitorando o movimento do mouse e teclado... Também tenho um código em JavaScript para redirecionar após determinado tempo...

No entanto, não queria colocar só em JavaScript, mas devo fazer uma "dupla" com o PHP e JavaScript depois. Com PHP pode-se destruir a sessão e impedir alguém de usar o sistema após isto, mas os dados da última tela ainda ficam visíveis e o código somente será executado na próxima atualização de tela. Já colocando um código em JavaScript juntamente com o PHP, o código em JavaScript irá trocar a tela, levando para a tela de login novamente. Assim impede que a última tela que estava sendo exibida não fica mais visível.

Em resumo: Tópico concluído pois o pedido de ajuda era para o PHP e o JavaScript vejo como implantar depois.

Obrigado pela ajuda.
"Vinde a Mim, todos os que estais cansados e oprimidos, e Eu vos aliviarei" - Mateus 11,28.
www.flaviosistemas.com.br
Desenvolvendo projetos, facilitando sua vida.
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal