Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou com a seguinte dúvida:
No meu sistema, o usúario de nivel superior deve saber quem esta online.
então eu fiz assim:
na tabela de usuários tem um campo de status que se refere a estar ou nao logado no sistema,
assim que o usúario entra, além de criar sua sessão no PHP, faz o update e o status dele que torna-se online, dessa forma eu consigo selecionar na tabela os usuários que estão online.
Quando o usuário clica em sair faz a mesma coisa, mas ao contrário (encerra sessão e atualiza campo para offline). Mas o problema é que se o usuário sair do sistema fechando o navegador, ele encerra sua sessão no PHP, mas não ha como mudar o status dele na tabela, assim o sistema mostrará ao super usuário que o tal usuário está online mas nas verdade nao está.
Como posso resolver isso? ou existe uma maneira melhor de isso?
Editado para corrigir uma palavra
Só chamar uma página pra encerrar a sessão no php e banco de dados.
Veja:
<script type="text/javascript">
window.onbeforeunload = function() {
alert("Não feche a janela");
alert("Pra que isso?");
alert("Fique mais um pouquinho");
alert("Estava bom com você aqui");
alert("O que houve?");
alert("Vai continuar aqui?");
alert("Quer mesmo sair?");
alert("Tem certeza?");
alert("Absoluta?");
alert("Jura pelo pai e a mãe?");
alert("Sim? Então pode ir");
}
</script>Evento on close window do javascript junto com ajax, ao fechar a janela voce faz o campo mudar e destruir a session dele. Depois voce aperfeiçoa para quando ele tiver mais de uma janela aberta e ele fechar apenas uma, nao destruir a session dele com algumas verificações.
Inves de janelas sao abas que se tiver mais de uma aba aberta e ele fechar uma delas, a sessão termina e muda o status. Será que tem como o JS detectar se as abas abertas sao do mesmo site?
Se você usar javascript pra ficar enviando notificações ao servidor de tempo em tempo, quando não chegar mais notificações após um certo tempo de inatividade é porque o javascript no cliente não está mais executando (fechou aba, navegador...).
Mas seria preciso uma tarefa agendada pra limpar do banco de dados usuários inativos.
Evento on close window do javascript junto com ajax, ao fechar a janela voce faz o campo mudar e destruir a session dele. Depois voce aperfeiçoa para quando ele tiver mais de uma janela aberta e ele fechar apenas uma, nao destruir a session dele com algumas verificações.