Saraiva-Man
04-01-2008, 16:57
Olá. :)
A questão é a seguinte:
Estou a desenvolver um site e quero ter acesso a todos os utilizadores online.
Tenho uma base de dados (MySQL) onde na minha tabela de utilizadores tenho um campo chamado "online" (boolean). Quando me registo, passo a true.
Como fazer para passar a false quando saio do site?
Tenho mesmo um ficheiro que trata de fazer o logout e destruir a sessão, caso carregue no link "Logout". E se eu sair fechando o browser? Poderei associar algo a Javascript e ao evento
<body onunload="" >
...
</body>
Obrigado pela ajuda! ;)
E se houver outro método melhor...agradeço então que me elucidem e me digam que técnicas deva estudar.
Mais uma vez, obrigado.
com javascript não sei como fazer isso...mas vê lá este script em php te serve:
http://www.ptcoders.com/forum/viewtopic.php?t=95
Saraiva-Man
04-01-2008, 17:26
Bem, percebi todo o código. Parece uma boa solução...e muito provavelmente vou optar por ela!!! :p
Obrigado fil79. ;)
Sim, podes fazer isso, meter javascript no onunload!
cumpzz
spastikman
05-01-2008, 02:51
sessões não se controlam dessa forma.
Então e se o browser crashar ? ;)
Tens duas formas de o fazer (decentes).
1º Contas todas as sessões criadas (count($_SESSION))
2º Crias uma tabela na base de dados, onde acrescentas todas as sessões que crias juntamente com a hora da sua criação.
Para esta segunda opção podes depois contar os utilizadores online nos ultimos 5 minutos (por exemplo !) bastando para isso fazer uma querie que faça o count(*) de todos os valores cuja hora apresenta uma diferença de 5 minutos para a actual.
Em mysql podes usar a função DATE_SUB(NOW(), INTERVAL 5 MINUTES).
Tem em atenção que isto é muito bonito mas para sites grandes obriga a um esforço extra do processador.
Saraiva-Man
05-01-2008, 18:51
sessões não se controlam dessa forma.
Então e se o browser crashar ? ;)
Tens duas formas de o fazer (decentes).
1º Contas todas as sessões criadas (count($_SESSION))
2º Crias uma tabela na base de dados, onde acrescentas todas as sessões que crias juntamente com a hora da sua criação.
Para esta segunda opção podes depois contar os utilizadores online nos ultimos 5 minutos (por exemplo !) bastando para isso fazer uma querie que faça o count(*) de todos os valores cuja hora apresenta uma diferença de 5 minutos para a actual.
Em mysql podes usar a função DATE_SUB(NOW(), INTERVAL 5 MINUTES).
Tem em atenção que isto é muito bonito mas para sites grandes obriga a um esforço extra do processador.
Dá-me mais alguns pormenores acerca da primeira opção.
Contar as sessões. Envio as sessões (ou só o ID do user) para a minha base de dados MySQL? ? ?
Só conheço a função COUNT() em MySQL...pois em PHP conta o número de elementos de um Array...certo?
Cumprimentos, e desde já obrigado pela ajuda. :)