Contador de Visitas Simples com OO e Cookie !!!

Publicado por Daniel Santana 11/08/2004

[ Hits: 13.270 ]

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

Redirecionado paginas com registro de variavel em session

Executando comando PHP dentro da string

Forca

Apresentação da data em um formato mais agradavel.

vem ai em breve nosso flogao


  

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