Artigo 58 / 58
Contador de visitantes únicos baseado no IP
count users with php+mysql, contador de visitantes, count online users php
Saber quem visita o nosso site, saber quais as páginas que despertam mais interesse, o país que mais nos visita, permite optimizar e sincronizar os conteúdos a esses utilizadores,cujo objectivo é aumentar a visibilidade e o grau de interesse dos conteúdos que vamos criando.
Neste artigo vamos aprender como registar numa base de dados o ip dos visitantes que nos visitam.
Para garantir a fiabilidade do sistema vamos apenas gravar ip que ainda não existam, uma vez que apenas nos interessam ip únicos.
Para isso o primeiro passo é criar uma cláusula SQL que nos permita obter quais os ip´s na Base de Dados .
Para evitar armazenar todos os ip´s o ideal seria armazenar o número de visitantes, contudo isso , seguindo o meu raciocínio para este script não é possível visto que temos de possuir toda a lista de ip´s afim de podermos comparar se o ip (utilizador) que entra no sistema já foi gravado.
Na página inicial do site existe uma chamada a um módulo idêntico que permite obter o número de visitantes ao site da Revista PHP
<?php
// ligação ao servidor
$conn = mysql_connect("localhost","root","")
or die("Erro de ligação ao servidor :".mysql_error());
// selecção da base de dados
mysql_select_db("online",$conn);
// obtemos o ip do utilizador
$ip = $_SERVER['REMOTE_ADDR'];
//vamos varrer toda a base de dados
$rs = mysql_query("SELECT * FROM ips_unicos")
or die("Erro ao executar o pedido de selecção : ".mysql_error());
// uma flag que regista a alteração de estado no caso do ip existir
$flag = false;
while($linha = mysql_fetch_object($rs)){
if($linha->ip==$ip){
$flag = true; // o ip existe na base de dados
}
}
// se o ip não existe vamos inserir
if($flag ==false){
mysql_query("INSERT INTO ips_unicos (ip, hora)
VALUES ('".$ip."' ,'".date("d-m-Y H:i:s")."')")
or die("Erro ao executar o pedido de inserção: ".mysql_error());
}
// obtemos a lista de todos os ips únicos
$rs2 = mysql_query("SELECT COUNT(DISTINCT ip) FROM ips_unicos ")
or die("Erro ao obter o número total de ips ".mysql_query());
//imprime o total de utilizadores
$row = mysql_fetch_row($rs2);
echo "Existem ".$row[0]." ips únicos na base de dados";
?>
Existem 2 comentários para este artigo
Estão online 5 utilizadores !