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

Listar Usuários Online


RodrigoGomes

Pergunta

Olá amigos, eu refiz um script que conta usuários online, eu queria que, quando alguém o carrega-se e o ip dele não foçe encontrado, altomaticamente iria o colocar, e se ele entrasse e o ip foçe encontrado apenas iria fazer um update da file e do tempo que ele carrego.

<?php

mysql_connect("localhost","xxxx","xxxx");
mysql_select_db(xxxx);

$timeoutseconds = 300;
$timestamp=time();                                                                                            
$timeout=$timestamp-$timeoutseconds;

 if (mysql_query("SELECT * FROM useronline WHERE ip=$REMOTE_ADDR")) {
mysql_query("UPDATE useronline SET file='$PHP_SELF',timestamp='$timestamp' WHERE ip='$REMOTE_ADDR'") or die(mysql_error());
        } else {
mysql_query("INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')") or die("Database INSERT Error");
        }
mysql_query("DELETE FROM useronline WHERE timestamp<$timeout") or die("Database DELETE Error");
$result=mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'") or die("Database SELECT Error");
$user  =mysql_num_rows($result);                                                                              
if ($user==1) {echo"$user Usuário On-Line";} else {echo"$user Usuários On-Line";}

?>

Reparem:

if (mysql_query("SELECT * FROM useronline WHERE ip=$REMOTE_ADDR")) {

é nessa parte que esta o erro, por que ele sempre vai para a else

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

tenta colocar a variavel entre aspas....

mas que erro é que está dando?

 if (mysql_query("SELECT * FROM useronline WHERE ip='".$REMOTE_ADDR."'")) {

as vezes é isso, que aparentemente esta tudo ok!!!

deu certo.. :blink:

hehehe :D

estava criando vários ips na sql cada vez que entrava

Link para o comentário
Compartilhar em outros sites

  • 0

mas você quer que o sistema crie tipo uma sessao para o usuário, de modo a idnetifica-lo?

sim identifica-lo por ip,

tipo o usuário entra na página, o ip dele é armazenado na mysql com os segundos da hora que ele entro em 300 segundos esse ip é removido, no caso ele pdoe atualziar a página antes deste 300 segundos e o ip dele é de novo armazenado na mysql com os segundos diferentes, o que eu estava tentando fazer é que se o ip dele já foçe encontrado o script apenas atualizaria o campo de segundos sem presisar ficar armazenando vários ips iguais. :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0

Antes de qualquer coisa pegue o IP do cara e faça uma busca, se a busca retornar alguma coisa você só faz um update no campo que tem a hora de entrada, caso contrário você adiciona...tipo:

<?php
$ipdocara = //Aqui o que você usa para pegar o IP
$teste = mysql_query ("SELECT ip FROM tabela WHERE ip = '$ipdocara'");
$conta = mysql_num_rows($teste);
if ($conta > "0"){
//Aqui você faz o update na tabela, pois se o $conta for mais do que 0 significa que o IP do cara já esta na tabela
$novo_tempo = //Aqui o que você usa para pegar o tempo
mysql_query("UPDATE tabela SET coluna-do-tempo = '$novo_tempo' WHERE ip = '$ipdocara'");
}else{
//Caso contrário, ou seja, se nenhum IP for encontrado, você simplesmente adiciona o IP do cara como está fazendo atualmente

}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

já era intão... o SErra detonou!!!?

rss.. sim.. sim :D

abaixo o código para quem presisar:

<?php

//Efetua a conexão
mysql_connect("localhost","xxx","xxx");
mysql_select_db(xxx);

//Tempo em segundos que irá apagar os ips inativos
$timeoutseconds = 300;
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;

//Pega o ip
$ip = "$REMOTE_ADDR";

//Pega a o url da página que o uuário entro
$self = "$PHP_SELF";

//Verifica se o ip do usuário já se encontra
$verif = mysql_query ("SELECT ip FROM useronline WHERE ip = '$ip'");
$evo = mysql_num_rows($verif);

//Se for encontrado, faz a atualização do url e do segundos que a pessoa entrou
if ($evo > "0"){
mysql_query("UPDATE useronline SET file='$self',timestamp='$timestamp' WHERE ip='$ip'") or die("Database UPDATE Error");

//Caso não sejá encontrado ele insere o ip a url e o tempo
} else {
mysql_query("INSERT INTO useronline VALUES ('$timestamp','$ip','$self')") or die("Database INSERT Error");
}

//Deleta os ips que já passaram dos 300 segundos
mysql_query("DELETE FROM useronline WHERE timestamp<$timeout") or die("Database DELETE Error");
$result=mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$self'") or die("Database SELECT Error");

//Exibe o resultado
$user  =mysql_num_rows($result);                                                                              
if ($user==1) {echo"$user Total on-line";} else {echo"$user Total on-line";}

?>
Tabela para ser criada:
#
# Nome da Tabela 'useronline'
#

CREATE TABLE useronline (
   timestamp int(15) DEFAULT '0' NOT NULL,
   ip varchar(40) NOT NULL,
   file varchar(100) NOT NULL,
   PRIMARY KEY (timestamp),
   KEY ip (ip),
   KEY file (file)
);

Eu acho melhor vocês gravar esses dados em um bloco de notas e útilizar o "import".

Façam bom proveito.. e obrigado aos meus amigos que ajudaram.. :lol:

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,1k
×
×
  • Criar Novo...