Usuários Online

Nostradamus
em Tutoriais de Websites

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

 

Criando um sistema de usuários online com cadastro de record

 

 

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.

1º Passo: Mysql

 

Usuarios OnlineCREATE 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.RecordeCREATE TABLE `recorde` ( // Criamos a tabela com o nome `recorde`.`dia` date NOT NULL, // Adicionamos o campo `dia` que armazenará a data no formato aaaa-mm-dd.`numero` int(12) NOT NULL // Adicionamos o campo `numero` 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.

 

2º Passo: O código PHP

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 erromysql_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."','".$tempo."')"); // 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 TABLE recorde SET data = '".$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.";?>

 

Agora para incluir em sua página, use o seguinte código

 

<?include "usuarios.php";?>

 

Espero ter ajudado.

[twitter]ThomazYuji[/twitter]

Conde do Monte Cristo

Eu sempre vou ser o Conde. =)
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 16/09/06Posts: 464Gênero: MasculinoChar no Tibia: Yonlu

WOW QUE ROX, CARA PARABENS!

Te falar, sinto saudade de quando eu era jovem, muita saudade.

Augusto

Administrador de Sistemas
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 01/01/06Posts: 139Char no Tibia: Sua Irmã!

Gostei muito deste script tambem, pena que eu to parando de meche com isso =]

té +



Lutando por um Fórum melhor!


Não respondo dúvida por MP/MSN/SKYPE.

valtinho2004

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/04/08Posts: 2

Otimo script, parabens...

soh que tem muita gente perguntando:

ondem eu crio o aruqivo de MySql?

onde ponho os php?

devo criar?

como devo adcionar?...

 

essa pessoa sou eu, e muitos de mim se perguntam tbm

sohq ue sou diferente, tive coragem de postar!

 

obrigado, esperando um post melhorardo!

skrenansk

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/12/09Posts: 4Char no Tibia: Danado

cala boca cara, se nao sabe vai atras, para de reclama em todos os postes q voce ve.

ficar ai jogando, sem nada pra fazer é massa, agora vai atras e saiba como criar uma tabela, como introduzir um php.

 

 

------

 

cara seu php ta dahora,.. criei um site pro pra um server de tibia, e estou utilizando alguns dos scripts colocados no Xtibia. até agora 1 ou 2 teve problema, o resto esta otimo, só com alguns ajustes...

parabens