efsgan 0 Denunciar post Postado Julho 23, 2006 Criando um sistema de usuarios 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 [*]<? [*]$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. [*]?> [*]<? [*]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."; [*]?> Espero ter explicado direito.[]'s Compartilhar este post Link para o post Compartilhar em outros sites
.:D6:. 0 Denunciar post Postado Dezembro 18, 2006 deu esse erro na linha 11Parse error: syntax error, unexpected T_STRING in /home/xanimes/public_html/online.php on line 11 Compartilhar este post Link para o post Compartilhar em outros sites
Perfect Lion 10 Denunciar post Postado Dezembro 19, 2006 Opa legal o seu tutorial mais tem como ficar mais comprimido o seu codigo.... Não é necessario uma query para somente update... Eu montei um para o meu site http://www.paodemugen.com.br/site/index.php?se=online Mais depois eu crio um tuto de como eu criei esse ai ;) Compartilhar este post Link para o post Compartilhar em outros sites
Adriano06 0 Denunciar post Postado Maio 21, 2007 Olá Pessoal,Minha dúvida é o seguinte na linha 22:mysql_query("INSERT INTO online (ip, tempo) VALUES ('".$ip."','".$tempo."')"); // Adiciona a tabela um registro com o ip e o timestamp atual.Essa variável $tempo não seria $timestamp?Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 21, 2007 Adriano, pelo que vi no código, a variável correta é a $timestamp mesmo.efsgan, se não for isso, explica pro pessoal aí ;)A propósito, parabéns pelo tutorial.[]sAnderson Mello Compartilhar este post Link para o post Compartilhar em outros sites
iniPHP 0 Denunciar post Postado Julho 23, 2007 No meu:Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/webee/public_html/usuarios.php on line 26o que ocorre? Compartilhar este post Link para o post Compartilhar em outros sites