Primeiramente estaremos criando a tabela:
SQL
CREATE TABLE `usersonline` ( `ip` varchar(255) NOT NULL default '', `tempo` int(12) NOT NULL default '0' ) TYPE=MyISAM;
Agora o código responsável por captar os dados e mostrar o numero de pessoas online:
Obs: O código está todo comentado.
PHP
<?
//Configuração do banco de dados:
$host = "localhost"; //link para o seu mysql
$user = "usuario"; //usuario do bando de dados
$senha = "senha"; //senha do banco de dados
$db = "nome"; //nome do banco de dados
//Fim da configuração
$tempmins = 5; //minutos para deletar um usuario do banco de dados (minutos inativo)
//Código:
@$ip= $REMOTE_ADDR; //pega o IP do visitante
$res = mysql_connect("$host", "$user", "$senha") or die ("Erro de conexão"); //conecta com o DB
mysql_select_db($db,$res); //seleciona o DB
if(mysql_num_rows(mysql_query("SELECT * FROM usersonline WHERE ip='".$ip."'"))>0) { //verifica se o ip ja esta no DB
//ja que ele está é necessario dar um update no time para que ele não seja deletado rapidamente
mysql_query('UPDATE usersonline SET tempo="'.time().'" WHERE ip="'.$ip.'"');
} else {
//se ele não está no DB, então prescisamos inseri-lo
mysql_query('INSERT INTO usersonline (ip,tempo) VALUES ("'.$ip.'","'.time().'")');
}
mysql_query('DELETE FROM usersonline WHERE tempo<'.(time()-($tempmins*60))); //deleta os ips com mais que o tempo estabelecido
echo mysql_num_rows(mysql_query("SELECT * FROM usersonline")).' usuário(s) online'; //Mostra os usuarios online
//Fim do código
?>
Fonte: phplandia.net