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.










