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…