Ir para conteúdo

POWERED BY:

Arquivado

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

Quelipe

Contador de usuários on-line

Recommended Posts

Olá galera, irei mostrar um pequeno tutorial para criar um contador de usuários on-line no site:

 

Primeiro passo será criar um banco de dados ou usar o que você já tem disponível

 

Crie um banco de dados com o nome de "contador"

 

Segundo passo será criar uma tabela no banco de dados:

CREATE TABLE `online` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(20) NOT NULL,
`tempo` int(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

Após executados os passos acima vamos para a criação da conexão com o banco de dados:

agora vamos montar nossa pagina de conexão:

<?php
   mysql_connect("localhost", "root", "") or die (msql_error());
   mysql_select_db("contador") or die (mysql_error());
?>

 

Salve o arquivo com o nome de: conexão.php

 

Vamos agora para o arquivo principal do sistema:

<?php
   //faça a inclusão da página de conexão criada logo acima
   include "conexão.php"; 

   //determina um tempo para a variável $tempo
   $tempo = time();

   // pega o IP do usuário
   $ip = $_SERVER['REMOTE_ADDR'];

   //faz uma consulta para verificar se o ip já existe no banco de dados
   $verifica = mysql_query("SELECT * FROM online WHERE ip ='$ip'");

   //retorna a quantidade de linhas da consulta ou seja, pode retornar 0 ou 1 linha
   $linhas  = mysql_num_rows($verifica); 

   //se não existir o ip no banco ele grava um com um tempo determinado
   if($linhas == 0)
   { 
      // gravando o IP e o tempo no DB
      $acrescenta = mysql_query("INSERT INTO online (ip, tempo) VALUES ('$ip','$tempo')");
   }
   else
   { 
      // se o IP já existe ele o pega e atualiza o tempo no DB no IP selecionado
      //pega o IP retornado da consulta
      $ip = mysql_result($verifica,0,'ip');

      //faz um update para o registro do IP existente
      $atualiza = mysql_query("UPDATE online SET tempo ='$tempo' WHERE ip='$ip'"); 
   }

   //deleta a linha que não foi atualizada no tempo de 40 segundos
   mysql_query("DELETE FROM online WHERE tempo <'$tempo'".-"40");

   //faz uma consulta para mostrar quantos estão on-line 
   $online = mysql_query("SELECT * FROM online"); 
   //retorna o número de linhas que será a quantidade de usuários on-line nesse momento
   $agora = mysql_num_rows($online);
   if($agora==1)
   {
      //para ficar mais amigável se tiver somente 1 pessoa on-line
      echo "Apenas eu estou on-line";
   }
   else
   {
      //exibe todos os usuários que estão on-line
      echo "Temos ".$agora." usuarios on-line.";
   }
?>

 

Salve-o arquivo com o nome de: online.php

 

 

Pronto agora é só fazer um include desse arquivo onde quer que apareça a mensagem.

 

Espero gostem do tutorial e que seja util para alguem.

 

Atenciosamente,

Edimilson Sousa Quelipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom o script, mas e se o usuário passar mais de 40 segundos na página, sem atualizá-la, logo ele será tido como expirado e nãos será contado... Sou novo em PHP e posso estar equivocado, se estiver, peço que me corrijam, obrigado.

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.