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

Reconhecer Suários Online


dev

Pergunta

Oi, Pessoal. Ó eu aqui traveiz...

Ultimamente to marcando presença... rolleyes.gif

Olha só... to usando o código abaixo pra mostrar quais os usuários que estão online. Uso session para logar os usuarios, o código abaixo corresponde aos usuarios cadastrados/logados.

Consegui resolver os outrso erros que estavam dando, mas agora não aparece resultado nenhum. Alguém pode me ajudar?

<?

//USUÁRIOS ONLINE:

$tempmins = 15; //minutos para inatividade de um usuário

$ip=$REMOTE_ADDR; //pega o IP do visitante

if(mysql_num_rows(mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'"))>0) {  //verifica se o ip já esta no DB

//se está, é necessario dar um update no time

mysql_query('UPDATE useronline SET time="'.time().'" WHERE  ip="'.$ip.'"');

} else {

//ele não está no DB, então precisamos inseri-lo

mysql_query('INSERT INTO useronline (ip,time) VALUES ("'.$ip.'","'.time().'")');

}

mysql_query('DELETE FROM useronline WHERE time<'.(time()-($tempmins*60)));

//deleta os ips com mais de 15 minutos

$select = mysql_num_rows(mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'"))

//mysql_query("SELECT * FROM useronline");

WHILE($i = mysql_fetch_row($select))

{

$sql_usuario = mysql_query("SELECT * FROM dados WHERE id='".$i[1]."' LIMIT 1");

WHILE($c = mysql_fetch_array($sql_usuario))

{

echo $c['login'].'está online';

}

}

?>

Criei os campos ip e time na tabela useronline.

Desde já agradeço demais.

Abraços.

dev wink.gif

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

cara, você não pode fazer um mysql_fetch_row em cima de um mysql_num_rows !!

o Erro tah na parte em negrito !! e na mesma linha do mysql_num_rows tah faltando um ";"

<?

//USUÁRIOS ONLINE:

$tempmins = 15; //minutos para inatividade de um usuário

$ip=$REMOTE_ADDR; //pega o IP do visitante

if(mysql_num_rows(mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'"))>0) {  //verifica se o ip já esta no DB

//se está, é necessario dar um update no time

mysql_query('UPDATE useronline SET time="'.time().'" WHERE  ip="'.$ip.'"');

} else {

//ele não está no DB, então precisamos inseri-lo

mysql_query('INSERT INTO useronline (ip,time) VALUES ("'.$ip.'","'.time().'")');

}

mysql_query('DELETE FROM useronline WHERE time<'.(time()-($tempmins*60)));

//deleta os ips com mais de 15 minutos

$select = mysql_num_rows(mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'"));

//mysql_query("SELECT * FROM useronline");

WHILE($i = mysql_fetch_row($select))

{

$sql_usuario = mysql_query("SELECT * FROM dados WHERE id='".$i[1]."' LIMIT 1");

WHILE($c = mysql_fetch_array($sql_usuario))

{

echo $c['login'].'está online';

}

}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, ppqsalomao.

Agradeço a ajuda, cara. smile.gif

Continua não funcionando... mas olha só, não consegui entender bem como é feito o "intercâmbio" entre a tabela useronline a tabela dados... como que o php vai saber qual usuário na tabela dados é correspondente ao usuário que está online? wink.gif

Não tá faltando algum campos na tabela?

como postei, os campos da tabela useronline são ip (varchar) e time(int)...

Valeu

Abraços.

dev wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Não por que os dados dele estão em outra tabela e o sistema está usando o IP dele como indentificador !!

O script ficaria assim:

<?

//USUÁRIOS ONLINE:

$tempmins = 15; //minutos para inatividade de um usuário

$ip=$REMOTE_ADDR; //pega o IP do visitante

if(mysql_num_rows(mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'"))>0) {  //verifica se o ip já esta no DB

//se está, é necessario dar um update no time

mysql_query('UPDATE useronline SET time="'.time().'" WHERE  ip="'.$ip.'"');

} else {

//ele não está no DB, então precisamos inseri-lo

mysql_query('INSERT INTO useronline (ip,time) VALUES ("'.$ip.'","'.time().'")');

}

mysql_query('DELETE FROM useronline WHERE time<'.(time()-($tempmins*60)));

//deleta os ips com mais de 15 minutos

$select = mysql_query("SELECT * FROM useronline WHERE ip='".$ip."'");

//mysql_query("SELECT * FROM useronline");

while($i = mysql_fetch_row($select))

{

$sql_usuario = mysql_query("SELECT * FROM dados WHERE id='".$i[1]."' LIMIT 1");

WHILE($c = mysql_fetch_array($sql_usuario))

{

echo $c['login'].'está online';

}

}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Gladisson ... acho que você não me entendeu !!

Você notou que esse script pega o ID do usuário pelo IP da tabela dados ??

E que só segundo esse ID ele imprime os usuários online ??

Daí eu dizer que é falho !

Para fazer com que esse sistema funcione precisaria atualizar o IP dele na tabela dados toda vez que ele loga-se !

Por isso que eu imagino que não esteja exibindo nada !

Link para o comentário
Compartilhar em outros sites

  • 0

Faz sentido.... achei mesmo que tinha alguma coisa que não se encaixava...

O problema é que só encontrei esse sistema, vocês podem me dar uma idéia de como resolver?huh.gif

Agradeço muito a ajuda de vocês... ia ficar perdendo tempo sem chegar a lugar nenhum... smile.gif

Abraços,

Dev.

Link para o comentário
Compartilhar em outros sites

  • 0
Faz sentido.... achei mesmo que tinha alguma coisa que não se encaixava...

O problema é que só encontrei esse sistema, vocês podem me dar uma idéia de como resolver?huh.gif

Parte de sistema parece um que eu postei aqui no fórum, mais está modificado!

Pedro eu ententi sim, eu falei foi pro DeV.

Dev: você terá que fazer um sisteminha de login que grave o id do usuário em um session!

Ai sim o sistema vai funcionar!

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que entendi o que devo fazer... mas como fazer? dry.gif

Gladisson, já olhei a busca antes de postar aqui, desculpe, mas você pode me orientar onde encontro o sistema que você fez? Será que consigo adaptá-lo ao que preciso?

Obrigado, gente.

Dev. rolleyes.gif

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...