Login: Senha: Registrar-se - Esqueci minha senha
.: Menu
Home
Artigos
Sign. dos Sonhos
Papel de Parede
Ilusões de Ótica
.: Bancos
Emoticons e Gifs
Ícones
Logos
.: Serviços
Mural de Recados
Usuários Online
Bloco de Notas
Formmail
Meu IP
.: Geradores
Gerador de Senhas
Barra de Rolagem
Recomende
Pop-up
Inverter Link
.: Canais
Apostilas
Arte/Cultura
Blog
Busca
Celular
Downloads
E-mail Grátis
Emoticons
Esportes
Filmes
Flogs
Fontes
GTA Mods
Host Grátis
Humor
Infantil
Informática
Jogos
Jogos Online
Linux
Músicas
Notícias
Offline
Redirecionadores
Sites Parceiros
Webdesigners
Webmasters
.: Na Faixa
Sobre
Contato
Recomende-nos
Termos de uso

Criando um sistema de usuarios online

Enviado em 01/02/2007 - 05:59
Fonte: A A A A

Como funciona?
  • Teremos uma tabela no banco de dados com os campos ip, tempo.
    Se o ip do usuario não estiver cadastrado nesta tabela é adicionado um novo registro a tabela. o tempo será atribuido pela função
    time(), que retorna o timestamp Unix atual. Mais tarde faremos uma verificação desse timestamp aonde os mais novos permanecem os outros serão deletados...
  • Teremos outra tabela para o recorde.

Banco de dados

Usuarios Online
CREATE TABLE `online` ( // Criamos a tabela com o nome `online`.
`ip` varchar(16) NOT NULL, // Adicionamos o campo `ip` que poderá ter até 16 caracteres.
`tempo` int(12) NOT NULL // Adicionamos o campo `tempo` que poderá ter até 12 caracteres númericos.
) TYPE=MyISAM; // O tipo da tabela vai ser MyISAM, digamos que seja um padrão do MySql.

Recorde
CREATE TABLE `recorde` ( // Criamos a tabela com o nome `recorde`.
`dia` date, // Adicionamos o campo `dia` que armazenará a data no formato aaaa-mm-dd.
`numero` int(5) NOT NULL // Adicionamos o campo `numero` que poderá ter até 5 caracteres númericos, ou seja 99.999.
) TYPE=MyISAM; // O tipo da tabela vai ser MyISAM, digamos que seja um padrão do MySql.

INSERT INTO `recorde` (dia, numero) VALUES (NULL, 0); // Adicionamos a tabela um registro cujo não foi definida uma data e neste dia houveram 0 registros... Quando você abrir a página terá o seu novo recorde.

conexao.php

<?

$mysql_servidor = "localhost"; // Seu servidor de mysql, normalmente é localhost.

$mysql_usuario = "root"; // Seu usuario no mysql.

$mysql_senha = ""; // Sua senha no mysql.

$mysql_database= "usuarios"; // Seu banco de dados.

mysql_connect($mysql_servidor,$mysql_usuario,$mysql_senha) or die(mysql_error()); // Tenta conectar ao mysql, se falhar exibe o erro

mysql_select_db($mysql_database) or die(mysql_error()); // Tenta selecionar a base de dados, se falhar exibe o erro.

?>

usuarios.php

<?

include "conexao.php"; // Abre o arquivo "conexao.php" para conectar ao mysql.

 

// Definindo váriaveis. 

$timestamp = time(); // Define o timestamp.

$data = date("Y-m-d"); // Data no formato aa-mm-dd.

$ip = $_SERVER['REMOTE_ADDR']; // O ip do usuario.

 

// Criando comandos SQL. 

$onlineSql = "SELECT * FROM online WHERE ip = '".$ip."'"; // Comando SQL para selecionar todos os campos da tabela 'online', aonde o campo ip seja igual ao ip do usuario.

$recordeSql = "SELECT * FROM recorde"; // Comando SQL para selecionar todos os campos da tabela 'recorde'.

$agoraSql = "SELECT * FROM online"; // Comando SQL para selecionar todos os campos da tabela 'online'.

 

// Criando querys MySQL. 

$onlineSql = mysql_query($onlineSql) or die(mysql_error()); // Executa o comando SQL $online, se falhar exibe o erro.

$recordeSql = mysql_query($recordeSql) or die(mysql_error()); // Executa o comando SQL $recorde, se falhar exibe o erro.

 

// Agora verificaremos se o ip já está cadastrado, para cadastrar ou atualizar o banco. 

if(mysql_num_rows($onlineSql) > 0){ // Se o número de registros encontrados na query $online for maior que 0...

mysql_query("UPDATE online SET tempo = '".$timestamp."'"); // Atualizamos o tempo do usuario no mysql.

}else{ // Caso contrário.

mysql_query("INSERT INTO online (ip, tempo) VALUES ('".$ip."','".$timestamp."')"); // Adiciona a tabela um registro com o ip e o timestamp atual.

} // Finalizamos a condição.

 

// Eliminando usuarios da tabela. 

mysql_query("DELETE FROM online WHERE tempo < '".($timestamp-500)."'") or die(mysql_error()); // Deleta da tabela online os registros que o timestamp seja menor que o atual menos 500, não podemos ter uma precisão se o usuario está online, mas ele não atualizou a pagina nos ultimos 500 segundos, então provavelmente não está mais nela.

 

// Agora verificaremos o recorde atual. 

$recorde = mysql_fetch_array($recordeSql); // $recorde é a array para os resultados de $recorde.

$recorde = $recorde['numero']; // $recorde é o valor maximo do recorde.

 

// Verificando o número de usuarios online no momento. 

$agoraSql = mysql_query($agoraSql) or die(mysql_error()); // Executa o comando SQL $total_agora, se falhar exibe o erro.

$agora = mysql_num_rows($agoraSql); // Exibe o número de registros de usuarios online agora.

 

// Camparando o recorde com o numero atual. 

if($recorde < $agora){ // Se o recorde for menor que o número atual de usuarios online.

mysql_query("UPDATE recorde SET dia = '".$data."', numero = '".$agora."'") or die(mysql_error()); //

Atualizamos o recorde para o numero atual.

} // Fechamos a condição porque caso seja maior não

será alterado nada.

 

// Imprimindo número de usuarios online agora. 

echo "No momento estão online ".$agora." usuarios."; 

?>

Bem um simples contador de usuarios online para seu site...


Enviado por: brunohcs

Postado em: PHP

Esse artigo foi visualizado 1477 vezes

Compartilhe este artigo
facebook del.icio.us rec6 digg
Recomende este artigo a um amigo


Voltar
>> Comentários
 
Related Posts Plugin for WordPress, Blogger...
Comentar
Buscar Artigos:
.: Mods de GTA
GTA SA, VC, IV
SA - Carros
IV - Carros
Mods
GTA IV
SA - Mods Cleo
.: Saúde
Calculadora de IMC
Peso Ideal
Artigos de Saúde
.: Jogos Online
Ação
Aventura
Cassino
Classicos
Colorir
Corrida
Educativos
Esporte
Estrategia
Infantil
Luta
Meninas
Nave
Tiro
Outros
Adulto
Top Jogos
.: Parceiros
Mural de Recados Grátis
Papel de Parede
Show Moto
Web Visual
.: Nossos Números
Artigos: 931
Categorias: 51
Comentarios: 1863
Usuarios: 26710
Blocos de Nota: 87
Canais: 169

website monitoring service
eXTReMe Tracker
Na Faixa.net - Todos os direitos reservados. 12/2003 - 11/2024
Leia nossos Termos de Uso - Política de Privacidade
Desenvolvido por Web Visual
Crie seu Site - Papel de Parede Grátis - Show Moto - Mural de Recados Grátis - Dicas10