Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Velox

[Resolvido] Como saber quem está online através do campo ult_aces

Recommended Posts

Criei uma tabela chamada "usuarios" onde tem todas as informações dos usuários cadastrados no site, nela tem o campo "ult_acesso" no formato DATE datetime, no rodape da página coloco o seguinte:

if($logou==1){
mysql_query("UPDATE usuarios SET ult_acesso = NOW() WHERE id='$idusuario'");
}

 

Bom, mas é que já usei um sistema que usa timestamp e deleta/insere registro em outra tabela, mas esse não se mostrou muito eficiente no meu caso...

 

o que quero fazer é vamos supor que o seguinte resultado:

2012-01-21 20:10:54

 

quero mostrar que o cara está online até 5 minutos depois do tempo da ult_acesso:

2012-01-21 20:10:54 até 2012-01-21 20:15:54 vai estar online

 

 

é possível fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui criar uma solução simples, mas preciso da ajuda de vcs para saber se o que fiz é uma gambiarra louca que faz o sistema ficar lento ou é uma boa solução... é assim:

 

Na tabela 'usuarios' criei um campo chamado 'ult_time' (INT tamanho 20).

 

Coloquei um script no final de todas as páginas que atualiza esse campo usando a função time().

mysql_query("UPDATE usuarios SET ult_time = '$time' WHERE id='$idusuario'");

 

Já na página que mostra se o usuário está ou não online fiz isso:

$qry = mysql_query("SELECT * FROM usuarios WHERE id='$idusuario'");
$array = mysql_fetch_array($qry);
$tempo = $array['ult_time'];
$agora = time();
$termina = $tempo+300;
echo "$agora<br><br>$termina<br><br>";
if($agora < $termina){
echo 'voce esta online!!!!';
}
else{
echo 'seu tempo acabou! esta off!';
}

Como podem perceber, eu peguei o tempo do banco de dados, vamos supor que deu 1327186867, depois acrescentei 300 segundos nele e ficou assim 1327189867, depois pego a data atual com a função date(), vamos supor que dará 1327188605... se a data atual for menor que a data do termina, irá aparecer que o usuário está online, mas se a data atual passar do tempo limite irá mostrar que está offline.

 

O que acharam do sistema? Será que devo mudar em alguma coisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.