Edição de Setembro

... revista mensal de programação Open Source

Uma edição repleta de artigos inovadores, redigidos por profissionais, com especial detaque em PHP e PHP-GTK !
  Artigos :
- Design Patterns
- Cross Site Request
- Optimização de código
- Web Services
- Manuel Lemos em entrevista
-
Parceiros :
- Yahoo
- DRI
- Adianti
- PHPClasses
A Revista PHP é distribuida por universidades, instituições e empresas
Solicite-nos informação para publicidade a preços reduzidos !


Artigo 58 / 58

Contador de visitantes únicos baseado no IP


Tags :
count users with php+mysql, contador de visitantes, count online users php


Uma das tarefas que é útil em sites dinâmicos é manter um controlo sobre os utilizadores que visitam o nosso site.
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";
?>  

 


Comentários
Nome
Email
Comentário

+=
Existem 2 comentários para este artigo

Enviado por: José Franco
Comentário
Sim percebi o que dizes , mas o objectivo deste artigo é apenas uma "ignição" a uma solução desse tipo, e estou certo que ajudará muita gente a compreender como fazê-lo Ainda assim muito obrigado pela tua sugestão. Deixo um desafio. Faz um artigo que eu tratarei de publicá-lo aqui abordando essa temática
em 28-02-2009 às 05:13:14

Enviado por: Lopo Lencastre de Almeida
Comentário
Para isto funcionar tens de tomar em consideração outros factores.
Se os visitantes estiverem por detrás de um proxy (caso comum a quase todos os utilizadores particulares em Portugal) só contas um conjunto muito pequeno de IPs -- o que não quer dizer de todo visitantes -- e as estatísticas são falhas.
A melhor forma de facilmente controlar isto é usares sessions que guardem o IP
em 2 de Dezembro de 2008 às 17:01



Links patrocinados

Sponsors

Revista PHP Edição online
 Estão online 5 utilizadores !
38.107.191.118

Artigos publicados online

  • em breve
  • Publicidade
  • eXTReMe Tracker

Promove-te

A Revista PHP, está a receber propostas para edição em edições seguintes. Os teus artigos serão revistos por uma equipa profissional, e publicados de acordo com o grau de profissionalismo. A revista tem um ISSN associado, o que significa que os artigos aquí publicados serão de interesse ciêntifico, podendo ser utilizados em trabalhos de pesquisa tecnologica desde que citada a fonte !