Pergunta

Atualmente, no meu script PHP, depois que um usuário conectou, eu armazenei session_login = 1. Mas tenho um problema. Eu tenho o hábito de usar o Firefox, o Multi-TAB (acredito que a maioria das pessoas e o aplicativo de navegadores da web hoje tem função de várias abas). Fechei a guia que tem a sessão, mas não fechei o navegador. Depois de algumas horas, volto à mesma página que exige que eu faça login, mas não. Não exige que eu faça login novamente (acho que é chamado de "sessão"). Existe alguma maneira de fazer logout o usuário se ele fechar a guia Fechar o navegador ??

Eu tenho 1 solução agora, o tempo de tempo. Mas tenho conhecimento muito limitado na data/hora do PHP, então essa seria a última opção. Eu queria saber, há mais alguma coisa que eu possa fazer, além de usar o tempo de tempo?

Foi útil?

Solução

O PHP tem uma maneira fácil de definir quanto tempo durará uma sessão antes de se destacar:

session_set_cookie_params(3600); // make it expire after 1 hour

Basta passar no número de segundos que você deseja que a sessão dure (no exemplo, 1 hora = 60 minutos = 3600 segundos).

http://us2.php.net/manual/en/function.session-set-cookie-params.php

Outras dicas

Um cookie de sessão é liberado apenas do navegador quando a sessão do navegador é fechada (ou seja, quando o navegador está fechado): daí o nome. Se você deseja que a sessão seja limpa logo após a guia ser fechada, poderá definir um tempo de validade muito curto no cookie (cerca de 5 minutos) e armazenar o mesmo no banco de dados. Em seguida, tenha uma função JavaScript na página da web, chamando um arquivo do seu servidor a cada minuto: este arquivo "atualiza" a entrada de cookie/banco de dados pelos próximos cinco minutos. Se eles deixarem seu site por mais de cinco minutos, a sessão será invalidada.

Você também pode adicionar uma função JavaScript "Onunload" que detecta se eles fecharam a página da Web ou foram para outra página: você pode adicionar um gancho para chamar uma função "DestroyCookie" - no entanto, você terá que verificar se eles não têm Acabei de ir para outra página no seu site e na verdade não tem duas páginas do seu site, abrindo em duas guias.

Acredito que a opção que você está procurando é a configuração do vencimento do cookie da sessão. Não me lembro do comando PHP, mas você deve definir o cookie para expirar quando a janela fechar.

Aqui está a documentação da sessão PHP: http://us2.php.net/manual/en/book.session.php

Talvez você possa usar session_write_close ()?

Há um comentário sobre a documentação do PHP para a função session_destroy que pode ser útil para você: http://us2.php.net/manual/en/function.session-Destroy.php#71889

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top