Nostradamus 6 Postado Outubro 6, 2006 Share Postado Outubro 6, 2006 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. Link para o comentário Compartilhar em outros sites More sharing options...
Conde do Monte Cristo 0 Postado Outubro 6, 2006 Share Postado Outubro 6, 2006 WOW QUE ROX, CARA PARABENS! Link para o comentário Compartilhar em outros sites More sharing options...
Augusto 18 Postado Outubro 16, 2006 Share Postado Outubro 16, 2006 Gostei muito deste script tambem, pena que eu to parando de meche com isso =] té + Link para o comentário Compartilhar em outros sites More sharing options...
valtinho2004 0 Postado Abril 20, 2008 Share Postado Abril 20, 2008 (editado) 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! Editado Abril 20, 2008 por valtinho2004 Link para o comentário Compartilhar em outros sites More sharing options...
skrenansk 0 Postado Dezembro 14, 2011 Share Postado Dezembro 14, 2011 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 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados