Primeiramente vc cria as tabelas no BD.
CREATE TABLE `maximo` ( `quantidade` int(7) NOT NULL default '1', `data` date NOT NULL default '0000-00-00', `hora` time NOT NULL default '00:00:00' ) TYPE=MyISAM; # # Extraindo dados da tabela `maximo` # INSERT INTO `maximo` VALUES (1, '2005-06-04', '09:00:00'); # -------------------------------------------------------- # CREATE TABLE `usersonline` ( `id` int(7) NOT NULL auto_increment, `ip` varchar(255) NOT NULL default '', `TIME` int(12) NOT NULL default '0', `local` varchar(255) NOT NULL default '', `usuario` varchar(50) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=38760;nao esqueca de inserir algum valor na tabela maximo para ele funcionar
ai vc cria o arquivo conexao.php
<? $conexao = mysql_connect("localhost","usuario", "senha"); $db = mysql_select_db("banco_de_dados"); ?>
online_inc.php
<? /////////////////////////////////////////////////////////////////////// //SCRIPT PARA MOSTRAR A QTDADE DE USUARIOS ONLINE /////////////////////////////////////////////////////////////////////// /*Definindo Variáveis para a conexão com o banco de dados*/ require('conexao.php'); //------------------------------------------------------------------ //isso serve para pegar a query (se tiver) da pagina em que o visitante está $query = $_SERVER['QUERY_STRING']; if ($query == "") { $query = ""; } else { $query = "?".$query; } //------------------------------------------------------------------ // pega o endereco da pagina onde o visitante está navegando $local = $PHP_SELF.$query; $ip = $_SERVER['REMOTE_ADDR'];//ip do visitante $time = time (); $data = date('Y-m-d');//pega a data $hora = date('H:i:s');//pega a hora //------------------------------------------------------------------ //verifica se o ip ja esta no BD $Cs = mysql_query ("SELECT * FROM usersonline WHERE ip='$ip'") or die ( mysql_error() ); //se o ip ja tiver no BD if ( mysql_num_rows ($Cs) > 0 ) { //atualiza a tabela dos users q estiverem online e seta o tempo , local, usuario(que vc pode pegar do seu sistema de login $_SESSION[login]) onde o ip for igual ao do visitante mysql_query ("UPDATE usersonline SET time='$time', local='$local', usuario='$_SESSION[login]' WHERE ip='$ip'") or die ( mysql_error () ); } else { //caso nao tiver o ip do visitante ele insere o ip,tempo,local e usuario(se tiver a sessao registrada $_SESSION[login]) mysql_query ("INSERT INTO usersonline (ip, time, local, usuario) VALUES ('$ip','$time','$local','$_SESSION[login]')") or die ( mysql_error () ); } //tempo em segundo para o tempo q o visitante fica sem atualizar a pagina $timeout = $time - 500; //deleta todos os que ficarem ociosos mysql_query ("DELETE FROM usersonline WHERE time < $timeout") or die ( mysql_error () ); $Cs2 = mysql_query ("SELECT * FROM usersonline") or die ( mysql_error () ); //conta qtos estao online $online = mysql_num_rows ($Cs2); $Cs3 = mysql_query ("SELECT * FROM maximo") or die ( mysql_error () ); $x = mysql_fetch_array ($Cs3); $quant_atual = $x["quantidade"]; //se qtidade atual for menor q os nº q estiverem online if ($quant_atual < $online) { //atualiza a tabela maximo e seta o valor de usuario q estao online(lembrando que deve haver um registro inicial na tabela maximo) mysql_query ("UPDATE maximo SET quantidade='$online', data='$data', hora='$hora' WHERE quantidade='$quant_atual'") or die ( mysql_error () ); } //variavel com o valor do maximo de usuario q ja estiveram online ao mesmo tempo $maximo_user = ($quant_atual < $online) ? $online : $quant_atual; /////////////////////////////////////////////////////////////////////// //SCRIPT PARA MOSTRAR A QTDADE DE USUARIOS ONLINE /////////////////////////////////////////////////////////////////////// ?>esse arquivo vc coloca em cada pagina que vc deseja monitorar atraves de include
<? include ("online_inc.php"); ?>
Nao esqueça de abrir a sessão no começo da pagina que estiver monitorando(no caso de ter um sitema de login)
O qual vc muda de acordo com o seu script ($_SESSION[login])
<? session_start(); ?>
o proximo codigo não vou comentar pois é parecido com o outro, nele vc monitora os visitantes online e logados, visualizando o IP, local, tempo que falta para ele ficar offline(se nao atualizar a pagina),usuario logado
<? /////////////////////////////////////////////////////////////////////// //SCRIPT PARA MOSTRAR A QTDADE DE USUARIOS ONLINE /////////////////////////////////////////////////////////////////////// /*Definindo Variáveis para a conexão com o banco de dados*/ require('conexao.php'); //time para ser armazenado no banco de dados $time = time (); //tempo em segundos que o usuario fica no banco se nao tiver atividade $timeout = $time - 500; //deleta os visitantes que estão inativos mysql_query ("DELETE FROM usersonline WHERE time < $timeout") or die (mysql_error()); //seleciona os registros da tabela usersonline $Cs2 = mysql_query ("SELECT * FROM usersonline") or die (mysql_error()); //conta o numero de registros encontrados $online = mysql_num_rows ($Cs2); //seleciona somente os visitantes que estão logados $Cs2_logados = mysql_query ('SELECT * FROM usersonline where usuario != ""') or die (mysql_error()); //conta o numero de registros encontrados $online_logados = mysql_num_rows ($Cs2_logados); //seleciona o numero maximo de visitantes que estiveram online ao mesmo tempo $Cs3 = mysql_query ("SELECT *, DATE_FORMAT(data, '%d/%m/%Y') as data_nova FROM maximo") or die (mysql_error()); $x = mysql_fetch_array ($Cs3); $quant_atual = $x["quantidade"]; $data_nova = $x["data_nova"]; $hora = $x["hora"]; //se a qtidade atual de visitantes for maior que a do banco atualiza esta informacao if ($quant_atual < $online) { mysql_query ("UPDATE maximo SET quantidade='$online' WHERE quantidade='$quant_atual'") or die(mysql_error()); } $maximo_user = ($quant_atual < $online) ? $online : $quant_atual; echo "<font face=verdana size=2 color=#000000>Logados: </font><font face=verdana size=2 color=#FF0000>".$online_logados."</font><br>"; echo "<font face=verdana size=2 color=#000000>OnLine: </font><font face=verdana size=2 color=#FF0000>".$online."</font>"; echo "<br>"; echo "<font face=verdana size=2 color=#000000>Máximo:</font> <font face=verdana size=2 color=#FF0000>". $maximo_user."</font> - <font face=verdana size=2 color=#0000FF>".$data_nova." ".$hora."</font>"; echo "<br><br>"; echo "<table width=700 border=0 cellspacing=2 cellpadding=2> <tr> <td width=124 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>IP:</font></td> <td width=373 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Local:</font></td> <td width=70 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Timeout:</font></td> <td width=107 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Usuário:</font></td> </tr> </table>"; $query = mysql_query ("SELECT * FROM usersonline order by time ASC") or die ( mysql_error () ); $cont = 1; while ($linha=mysql_fetch_array($query)) { $ip_bd = $linha["ip"]; $local_bd = $linha["local"]; $time_bd = $linha["TIME"]; $usuario_bd = $linha["usuario"]; $falta = ($time_bd - $timeout); //============================================== //para alternar a cor da tabela if ($cont ==1) { $cor = "#C2DCF8"; } else {//1 if ($cont == 2){ $cor = "#CCCCCC"; $cont = 0; //Aqui vc Zera o contador } //2 }//1 //============================================= ?> <table width="700" border="0" cellspacing="2" cellpadding="2"> <tr> <td bgcolor="<? echo $cor; ?>" width="124"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $ip_bd; ?></font></td> <td bgcolor="<? echo $cor; ?>" width="373"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $local_bd; ?></font></td> <td bgcolor="<? echo $cor; ?>" width="70"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $falta; ?></font></td> <td bgcolor="<? echo $cor; ?>" width=107><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $usuario_bd; ?></font></td> </tr> </table> <? $cont++; } ?>
A pedidos, para mostrar somente os visitantes logados no site...
<? /////////////////////////////////////////////////////////////////////// //SCRIPT PARA MOSTRAR A QTDADE DE USUARIOS ONLINE /////////////////////////////////////////////////////////////////////// /*Definindo Variáveis para a conexão com o banco de dados*/ require('conexao.php'); //time para ser armazenado no banco de dados $time = time (); //tempo em segundos que o usuario fica no banco se nao tiver atividade $timeout = $time - 500; //deleta os visitantes que estão inativos mysql_query ("DELETE FROM usersonline WHERE time < $timeout") or die (mysql_error()); //seleciona somente os visitantes que estão logados $Cs2_logados = mysql_query ('SELECT * FROM usersonline where usuario != ""') or die (mysql_error()); //conta o numero de registros encontrados $online_logados = mysql_num_rows ($Cs2_logados); echo "<font face=verdana size=2 color=#000000>Logados: </font><font face=verdana size=2 color=#FF0000>".$online_logados."</font><br>"; echo "<table width=700 border=0 cellspacing=2 cellpadding=2> <tr> <td width=124 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>IP:</font></td> <td width=373 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Local:</font></td> <td width=70 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Timeout:</font></td> <td width=107 bgcolor=#000000><font color=#FFFFFF size=2 face=Verdana>Usuário:</font></td> </tr> </table>"; $query = mysql_query ("SELECT * FROM usersonline where usuario != '' order by time ASC") or die(mysql_error()); $cont = 1; while ($linha=mysql_fetch_array($query)) { $ip_bd = $linha["ip"]; $local_bd = $linha["local"]; $time_bd = $linha["TIME"]; $usuario_bd = $linha["usuario"]; $falta = ($time_bd - $timeout); //============================================== //para alternar a cor da tabela if ($cont ==1) { $cor = "#C2DCF8"; } else {//1 if ($cont == 2){ $cor = "#CCCCCC"; $cont = 0; //Aqui vc Zera o contador } //2 }//1 //============================================= ?> <table width="700" border="0" cellspacing="2" cellpadding="2"> <tr> <td bgcolor="<? echo $cor; ?>" width="124"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $ip_bd; ?></font></td> <td bgcolor="<? echo $cor; ?>" width="373"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $local_bd; ?></font></td> <td bgcolor="<? echo $cor; ?>" width="70"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $falta; ?></font></td> <td bgcolor="<? echo $cor; ?>" width=107><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo $usuario_bd; ?></font></td> </tr> </table> <? $cont++; } ?>
Qualquer duvida é so postar....
Edição feita por: <?PHPMAN?>, 04/11/2005, 13:35.