Versão: 1.0
Funcionalidade: Mostra usuários online com listagem por área.
Instalação: Manual, faça você mesmo
Visualização:
Sem visualização.
Comentários: Script mais para estudo, porem muito facil de modificar para usar em seu site.
- Mostra total usuários online
- Horário de entrada no site
- Último clique ou refresh
- Listagem dos usuários online mostrando o tempo total
- Listagem do total de usuários online por área
Crie a tabela
CREATE TABLE user_online ( `id` int(11) NOT NULL auto_increment, `sess` varchar(50) NOT NULL, `entrada` varchar(14) NOT NULL default '', `ult_click` varchar(14) NOT NULL default '', `ip` varchar(15) NOT NULL default '', `area` text NOT NULL, PRIMARY KEY (`id`) );
Não esqueça de alterar dados para conexão com MySQL e o nome do banco de dados.
<?php
session_start();
$session_id = session_id();
$timestamp = time();
$ip = $_SERVER['REMOTE_ADDR'];
$area = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0){
$area .= "?".$_SERVER['QUERY_STRING'];
}
$con = mysql_connect('localhost','usuario','senha');
$db = mysql_select_db('banco_de_dados');
//deletando se está a mais de 3 minutos inativo
$sql_deleta = "delete from user_online where (($timestamp - ult_click)/60) >= 3";
$exe_deleta = mysql_query($sql_deleta) or die(mysql_error());
$sql_verifica = "select * FROM user_online WHERE sess = '$session_id'";
$exe_verifica = mysql_query($sql_verifica, $con) or die(mysql_error());
$num_verifica = mysql_num_rows($exe_verifica);
if ($num_verifica == 0){
$entrada = $timestamp;
$ult_click = $timestamp;
$sql_inclui = "insert into user_online (sess, entrada, ult_click, ip, area) values ('$session_id','$timestamp','$timestamp','$ip','$area')";
$exe_inclui = mysql_query($sql_inclui, $con) or die(mysql_error());
echo "incluiu !!<br />";
} else {
$reg_verifica = mysql_fetch_array($exe_verifica, MYSQL_ASSOC);
$entrada = $reg_verifica['entrada'];
$ult_click = $timestamp;
$sql_altera = "update user_online set ult_click = '$timestamp', area = '$area' where sess = '$session_id'";
$exe_altera = mysql_query($sql_altera, $con) or die(mysql_error());
echo "alterou ultimo click !!<br />";
}
//número de usuários online nos ultimos 3 minutos
$sql_online = "select count(*) as online FROM user_online";
$exe_online = mysql_query($sql_online, $con) or die(mysql_error());
$reg_online = mysql_fetch_array($exe_online, MYSQL_ASSOC);
echo "Hora de entrada : ".date("H:i:s", $entrada)."<br />";
echo "Ultimo click : ".date("H:i:s", $ult_click)."<br />";
echo "Número de usuários online nos ultimos 3 minutos = ".$reg_online['online']."<br />";
echo "<hr />";
// Mostrando todos os usuários online
$sql_mostra_online = "select * from user_online order by id desc";
$exe_mostra_online = mysql_query($sql_mostra_online, $con) or die(mysql_error());
$num_mostra_online = mysql_num_rows($exe_mostra_online);
if ($num_mostra_online > 0){
echo '<h1>Usuários Online</h1>';
echo '<table border="1">';
echo '<tr>
<td>ID</td>
<td>IP</td>
<td>TEMPO ONLINE</td>
<td>ÁREA</td>
</tr>';
while ($reg_mostra_online = mysql_fetch_array($exe_mostra_online, MYSQL_ASSOC)){
//tempo online
$min = floor(($timestamp - $reg_mostra_online['entrada'])/60);
$seg = ($timestamp - $reg_mostra_online['entrada'])%60;
if ($min < 10){
$min = '0'.$min;
}
if ($seg < 10){
$seg = '0'.$seg;
}
echo '<tr>
<td>'.$reg_mostra_online['id'].'</td>
<td><a href="http://www.dnsstuff.com/tools/whois.ch?ip='.$reg_mostra_online['ip'].'">'.$reg_mostra_online['ip'].'</a></td>
<td>'.$min.':'.$seg.'</td>
<td>'.$reg_mostra_online['area'].'</td>
</tr>';
}
echo '</table>';
}
echo '<hr />';
//selecionando o número de usuários por area
$sql_area = "select count(*) as numero_area, area from user_online group by area order by area";
$exe_area = mysql_query($sql_area, $con) or die (mysql_error());
$num_area = mysql_num_rows($exe_area);
if ($num_area > 0){
echo '<h1>Usuários Online por Área</h1>';
echo '<table border="1">';
echo '<tr>
<td>ÁREA</td>
<td>NÚMERO DE USUÁRIOS</td>
</tr>';
while($reg_area = mysql_fetch_array($exe_area, MYSQL_ASSOC)){
echo '<tr>
<td>'.$reg_area['area'].'</td>
<td>'.$reg_area['numero_area'].'</td>
</tr>';
}
echo '</table>';
}
?>
Qualquer dúvida posta ae.
Falowz!!










