Ir para conteúdo
Fórum Script Brasil
  • 0

Usuarios Online Verificacao com Data e Hora


Enigma_avatar

Pergunta

Bom, aki eu me perdi novamente, tenho uma div que ira se atualizar de 5 em 5 minutos onde mostrara os usuarios que estao online, na minha tabela tenho um campo (LOGIN) onde eu pego a data e a hora e atualizo ele no formato 25-03-2014 16:07:15, porem não estou conseguindo exibir os usuarios que estao logados, alias não exibe nenhum ususarios, segue meu codigo para analizarem.

<?
$GMT = 0;
$hoje = date("d-m-Y H:i:s", strtotime($GMT. 'hours'));
$result = mysql_query("UPDATE novo_usuarios SET login='$hoje' WHERE id='$id_user'");
$minutos = ($hoje - 6);

$result2 = mysql_query("SELECT * FROM novo_usuarios WHERE status='livre' AND login<='$minutos' AND ID NOT IN($id_user)");
while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
?>
<div id="usuariosonline">
<?
    if (file_exists("avatares/$row[ID].png")){
    echo "<img src='avatares/$row[ID].png' align='left'>";}
    elseif(file_exists("avatares/$row[ID].png")){
    echo "<img src='avatares/$row[ID].png' align='left'>";}
    else{echo "<img src='avatares/.png' align='left'>";}
    ?>
<? echo "$row[usuario]<br>
 <div id='CLANONLINE'>CLAN:$row[clan]</div> 
</div> ";
}
?>

:ninja: alguma dica?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Primeiro salve no banco no formado Y-m-d H:i:s, dessa forma você coloca o campo com tipo datetime isso vai te dar a possibilidade de comparar as datas com > e < caso contrário você terá que trabalhar com string ai fica complicado pra caramba e oneroso pro banco.

Para você fazer a seleção dos usuários online, você tem que selecionar por um período de tempo válido no banco, por exemplo como você fez os usuários que logaram nos últimos 6 minutos, para tanto você tem que informar as duas datas para o MySQL fazer a seleção.

SELECT * FROM novo_usuarios WHERE status='livre' AND login BETWEEN '$datamin' AND '$datamax' AND ID NOT IN($id_user)

A função BETWEEN faz a consulta de datas (ou valores) entre a primeira data (valor mínimo) e a segunda data (valor máximo).

Para ter os valores de $datamin e $datamax você deve usar a função date() e strtotime().

<?php
$datemin = date('Y-m-d H:i:s', strtotime('-6 minutes'));//Seis minutos atrás
$datemax = date('Y-m-d H:i:s');//Hora atual

Porém há um problema que talvez você se depare.

Um usuário pode se logar no site e ficar 20, 30 minutos on-line porém depois dos 6 minutos ele será considerado off-line, o que você pode fazer é a cada interação do usuário com o site(acesso à página) o campo que guarda a data do login seja alterado.(Não resolve, mas melhora.)

Outro problema e mais complexo é o usuário se conectar e ficar menos de 3 minutos on-line e sair, esse você só melhora o problema baixando o tempo dos 6 minutos.

Ou você resolve os dois problemas fazendo requisições em AJAX para realmente ficar verificando se o usuário está on-line.

Abraços.

Tudo de bom.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...