Contador de Visitas Simples com OO e Cookie !!!

Publicado por Daniel Santana 11/08/2004

[ Hits: 13.112 ]

Homepage: http://www.san.pro.br

Download contador_fimdeprova.php




Um Contador de Visita simples, mas com Orientação a Objetos.
Este script cria um contador real, e não um contador que conta mais uma visita a cada clique de link ou a cada atualização de página.

E ainda uso uma sintaxe de IF pouco comum, mas muito mais fácil para os iniciantes.

espero que ajude!

Um Araço!

  



Esconder código-fonte

<?php
/**************
* Script...: Contador de visitas com arquivo de texto
* Autor....: Grupo Fimdeprova .COM
* Data.....: 11 de Agosto de 2004
* Obs......: Um contador simples, com cookies e OO.
             O Script Pode ser alterado por qualquer pessoa
             E para qualquer finalidade.
             O Grupo Fimdeprova .COM Não se responsabiliza pelo mal uso
             de seus scripts
*********/

// Iniciando a Classe
class CONTADOR_FIMDEPROVA{


   var $Visitas; // Esta variável em nível de classe servirá para
                     //guardar o número de visitas

   // Metodo construtor da classe
   //é executado no momento da criação
   //de uma instância em um objeto 
       // $var = new CONTADOR_FIMDEPROVA()
       function CONTADOR_FIMDEPROVA(){

      //A variável $Arquivo guarda o caminho e o nome
      //do arquivo que armazenará a quantidade de visitas do site.
      // Ex.: $Arquivo = 'caminho_do_arquivo/nome_do_arquivo';
      $Arquivo = 'contador.txt';

      // Verificação de existência do Arquivo
      if (! file_exists($Arquivo)):
         // Caso ele não exista o PHP tentará cria-lo
             //com o modo de abertura 'x+'
         $ArquivoTemp = fopen($Arquivo, 'x+');
         // E cravará no mesmo o valor 0
         fwrite($ArquivoTemp, '0');
         // Fechando o Arquivo
         fclose($ArquivoTemp);
      endif;

      // Esta variável guarda o modo de Abertura para a função 
      //'fopen' da PHP o valor 'w+' faz o PHP abrir o arquivo para
      // leitura e escrita, e caso o mesmo arquivo ainda não exista,
      // o PHP tenta criá-lo, zera o tamanho do mesmo.
      // O valor 'r+' serve para o mesmo propósito mas
      // não zera o tamanho do arquivo.
      $ModoDeAbertura1 = 'r+';
      $ModoDeAbertura2 = 'w+';

      // Aqui o tal arquivo citado acima é aberto com o método
      // citado acima também
      // A referência do arquivo que será aberto, ficará na
      // variável $ArquivoAberto
      // A abertura é feita com a função 'fopen' da PHP
      $ArquivoAberto = fopen($Arquivo , $ModoDeAbertura1);

      // A função 'fgets' foi escolhida aqui para ler o arquivo,
      // pois, omitindo-se o segundo argumento, ela faz com
      //que o PHP leia até o fim da 1ª linha.
      // O valor desta linha fica armazenado na var $Visitas.
      // (int) converte EXPLICITAMENTE a String para integer
      $Visitas = (int) fgets($ArquivoAberto);
      
      // O arquivo agora é fechado com a função 'fclose'.
      fclose($ArquivoAberto);

      // Var com o Nome do Cookie, para a verificação
      $NomeDoCookie  = 'CookieContador';

      // Valor a ser verificado no cookie, e gravado no
      // mesmo caso não seja este o valor.
      $ValorDoCookie = TRUE;

      // Tempo de expiração do cookie. A função time,
      //retorna um timestamp da hora atual
      //e o número 3600 é referente à uma hora em segundos.
      // Assim você pode mudar para por ex:
      //7200, referente à duas horas.
      $PrazoDoCookie = time() + 3600;

      // Neste momento acontece a verificação da visita.
      //Isto é feito para que as visitas
      //não aumentem a cada atualização ou visitação de página.
      // Para isto grava-se um 'cookie' no micro do Usuário com
      //um prazo de 1 hora para expirar.
      // Caso não haja um cookie no micro do usuário,
      //ou, o valor do cookie seja diferente do definido por você,
      // será contada mais uma visita, caso contrário não.
      if(
      ! isset($_COOKIE["CookieContador"]) ||    
      $_COOKIE["CookieContador"] != TRUE):

         // Setando o valor e o prazo de expiração do Cookie 
         //de acordo com as variáveis setadas acima
         setcookie(
                    $NomeDoCookie,
                             $ValorDoCookie,
                             $PrazoDoCookie);
   
         // Voltando para a Variável que guarda as visitas,
             // adicionando 1 no valor atual
         $Visitas++;

         // Abrindo novamente o Arquivo para poder gravar o 
              //número de visitas
         //Para isto usa-se novamente a função 'fopen' e o Modo
              // de Abertura setado lá em cima
         $ArquivoAberto = fopen($Arquivo, $ModoDeAbertura2);

         // Gravando o Valor da variável Visitas dentro do 
              //arquivo, com a função 'fwrite'
         //da PHP. Esta função requer dois argumentos,
              //a referência de um arquivo aberto
         //e a string com o conteúdo a ser gravado.
         fwrite($ArquivoAberto, $Visitas);

         // Mais uma vez fechando o arquivo com 'fclose'
         fclose($ArquivoAberto);

      endif;// Terminando o IF que verifica se o Cookie existe

      // Disponibilizando o valor do numero de visitas para todos
      // os métodos da classe
      //$this->Visitas : Acessível à todos os Métodos
      //$Visitas: Acessível somente à este método, foi criada neste.
      $this->Visitas = $Visitas;

   }



// Este Método serve para mostrar o número de visitas
// Desta forma você consegue seguir melhor um dos Propósitos da OOP
//(Programação Orientada a Objeto)
//que é separar a programação da marcação

   function MostrarNumeroDeVisitas(){
      //Mostrando o Número de Visitas
      echo($this->Visitas);
   }

}

// Para colocar sua classe em teste basta instanciar um objeto
// Assim:
   $obj = new CONTADOR_FIMDEPROVA();

// E chamar o methodo que mostra o número de visitas
   $obj->MostrarNumeroDeVisitas();
?>

Scripts recomendados

AccountX

Data Formatada

gerando links de todos aquivos de um diretorio

Calculadora

Get IP HTTP


  

Comentários
[1] Comentário enviado por GrupoFimdeprova em 12/08/2004 - 08:51h

Observações:
O script ficou com muitas linhas por que procurei enchê-lo de comentários, visando facilitar a aprendizagem do código.
Estes comentários podem ser retirados do script para poder utilizá-lo, embora não seja recomentdado.

[2] Comentário enviado por removido em 17/08/2004 - 14:14h

kra soh um sugestao.....
qndo vc for usar comentarios em varias linhas, use assim:

/*
* Fica mais limpo o código
* e de mais fácil a leitura e compreensão
*/

soh use // qndo for um única linha ou qndo for ao lado de um trecho de código!
e vc pode adotar tb um eskema assim pra ficar mais visível o comentário

// ********* comentário **************

espero q vc nao pegue mal com meu comentário e q vc perceba q seu código ficará mais legível! :)
falo t+

[3] Comentário enviado por GrupoFimdeprova em 17/08/2004 - 14:22h

Bom, não sei se você viu o início do código, está assim.

Como o código estava já muito extenso, preferi não deixar cada bloco de código com duas linhas a mais.

e qualquer um que veja as duas barras saberá que aquela linha é um comentário, e que onde não tem é código a ser interpretado.

[4] Comentário enviado por GrupoFimdeprova em 17/08/2004 - 14:40h

/****** Mandei o outro sem querer. *****/

Continuando ....

Uso os meus códigos com esta sintaxe de comentário, mas achei que ficaria melhor usando // para cada linha, tendo em vista o espaço estreito que o código surgiria na tela do browser.

Mas agradeço o toque e da próxima vez farei desta forma.
Brigadão!

Um abraço!

[5] Comentário enviado por removido em 17/08/2004 - 22:06h

blz, foi soh uma dica pra melhorar seus scripts pra galera q ta aprendendo!
pode ter certeza q muito neguinho deve estar olhando varios fontes pra aprender!

os comentarios do jeito q estao nao atrapalham pra kem jah manja e tals, mas melhora a clareza do código pros q estao começando!

falo veio, abraço
e continue postando seus fontes ae, deve estar ajudando a galera ae!
falo t+


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts