Como registrar um usuário no PHP?
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?
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