Olá! Quarta Feira, 10 de Fevereiro de 2010.


Dicas CódigoFonte.net
Quinta Feira, 09 de Agosto de 2007

Contador de visitas php/Mysql

O que vamos fazer?
Um simples contador de visitas que utiliza MySQL.

Como funciona?
O sistema pega a data atual e o ip do visitante, após pegar esses dados ele verifica se os mesmo ja forma inseridos na tabela. (Verifica a data e o ip / Compara data atual + ip visitante com todos os registros da tabela)

- Criei uma classe chamada "visita", nela possui as funções:
visita();
Funciona como construtor, pega o ip do visitante e a data atual e armazena nas variaveis $ip e $data;
conectar();
Conexão com o banco
verificaVisitante();
Essa função faz as comparações, verifica se ja visitou. Caso não tenha visitado, insere novo registro.
imprime();
Seleciona todos os registros da tabela e imprime na tela

A tabela:

CREATE TABLE `visitas` (
`id` INT(50) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`ip` VARCHAR(11) NOT NULL,
`data` VARCHAR(10) DEFAULT '00/00/0000' NOT NULL
) TYPE = MYISAM;


O código:

<?php
/*
 *    contador de visitas
 *    @Date:    17-07-07
 *    @Filename:    contador.class.php
 **/
class visita
{
    /*
     * variaveis
     **/
     
    //Dados necessarios para verificacao  de visitantes
    var $ip; //armazena o ip do usuario
    var $data; //armazena a data atual

    //Dados necessarios para conexao com db   
    var $hostdb = "localhost";
    var $userdb = "root";
    var $passdb = "";
    var $namedb = "banco";

    //Nome da tabela
    var $tabVisitas = "visitas";
   
    /*
     * construtor
     **/
    function visita($ip)
    {
        //armazena na variavel 'ip' o ip do visitante atual
        $this->ip=$ip;
        //Pega a data atual
        $this->data=date("d/m/Y");
    }
       
    /*
     * conexao com banco
     **/
    function conectar()
    {
        $link= mysql_connect($this->hostdb,$this->userdb,$this->passdb)or die(mysql_error());
        mysql_select_db($this->namedb,$link)or die(mysql_error());
    }   

   
    /*
     * verifica se o usuario ja visitou
     **/
    function verificaVisitante()
    {   
        //Chama a funcao de conexao com db
        $this->conectar();
        /* Seleciona por ip e data  */
        $sql = mysql_query("SELECT ip,data
                            FROM ".$this->tabVisitas."
                            WHERE ip='".$this->ip."' AND data='".$this->data."'")or die(mysql_error());
        /* Verifica se a selecao feita existe, caso nao exista insere novo */
        if(!mysql_num_rows($sql)>0)
            $insereVisita = mysql_query("INSERT INTO ".$this->tabVisitas."
                                        (id,ip,data)
                                        VALUES
                                        ('','".$this->ip."','".$this->data."')");
        //else print("Ja visitou");
    }
    /*
     * imprime numero de visitas
     **/
    function imprime()
    {
        //Chama conexao;
        $this->conectar();
        //Seleciona todos
        $sql = mysql_query("SELECT * FROM ".$this->tabVisitas);
        //Conta quantos foram selecionados
        $total= mysql_num_rows($sql);
        //Imprime numero de visitas (registros na tabela)
        print("Visitas: ".$total);
    }
}
//'Chama' a classe visita e ja pega o ip do visitante
$visita = new visita($_SERVER['REMOTE_ADDR']);
//Chama a funcao verificaVisitante();
//Ela verifica se por ip e data se o usuario ja visitou
$visita->verificaVisitante();
//Imprime o total de visitas (total de registros na tabela)
$visita->imprime();
?>


Está bem comentado, acho que não preciso dizer mais nada...
Caso tenha alguma duvida é só comentar ;)
ou entrar em contato
eduardo@eduardostuart.com

Bom uso! :)
http://blog.eduardostuart.com | http://www.eduardostuart.com

Comentários do artigo [Novo comentário]

Fabio Fernandes - 06 de Setembro de 2008 - 08:31
Eu ja tenho um contador no site, Gostaria de saber como posso adicionar as visitas que existe no site para o meu contador não partir do zero
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:






Melhor Visualizado com
800x600 de Resolução

CodigoFonte.net » CodigoFonte.eti.br » Compre De Tudo » Meu Mural » PelamorDeDeus » Todos os Direitos Reservados © 2002/2008

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com