📘 1. O Que é um Contador de Visitas?

Um contador de visitas é uma ferramenta essencial para qualquer site que deseja monitorar o tráfego de usuários. Este tutorial ensina como criar um sistema profissional de contagem de visitantes únicos usando PHP puro, sem necessidade de banco de dados MySQL.

Este contador armazena dados em um arquivo JSON e utiliza cookies para identificar visitantes únicos, evitando contagens duplicadas quando o mesmo usuário recarrega a página.

💡 Por que usar este contador?
Não requer banco de dados, é leve e rápido, fácil de implementar, gratuito e open source, e fornece estatísticas detalhadas por dia, mês e total.

📊 2. Demonstração ao Vivo

Veja o contador funcionando em tempo real nesta página:

🎯 Estatísticas de Acesso

Hoje
2
Ontem
1
Este Mês
16
Total Geral
100
Contador Ativo! Os números acima são atualizados automaticamente a cada nova visita única.

3. Recursos e Funcionalidades

👤
Visitantes Únicos

Sistema de dupla verificação: Cookie + IP do dia para máxima precisão.

📅
Estatísticas Diárias

Rastreamento separado para hoje, ontem e qualquer data específica.

📆
Visão Mensal

Soma automática de todas as visitas do mês atual.

🌐
Total Geral

Contador acumulado desde a instalação do sistema.

💾
Sem Banco de Dados

Armazena dados em arquivo JSON, simples e eficiente.

Ultra Rápido

Código otimizado que não afeta a performance do site.

🔧 4. Como Instalar no Seu Site

1
Crie o arquivo contador.php Crie um arquivo chamado contador.php na pasta raiz do seu site.
2
Copie o código completo Copie o código da seção 5 deste tutorial e cole dentro do arquivo contador.php.
3
Configure as permissões Dê permissão de escrita (755 ou 777) na pasta onde está o arquivo via FTP ou cPanel.
4
Inclua nas suas páginas
<?php include "contador.php"; ?>
5
Exiba as estatísticas onde quiser
<p>Visitas hoje: <?= $visitasHoje ?></p> <p>Total: <?= $total ?></p>
6
Teste no navegador Acesse a página e verifique se os números estão aparecendo corretamente.
Importante: Certifique-se de que o PHP tenha permissão para criar e escrever no arquivo contador_dados.json que será gerado automaticamente.

💻 5. Código Completo do Contador (contador.php)

Copie o código abaixo e salve como contador.php:

<?php /** * Contador de Visitas Avancado para Sites * Sistema de rastreamento de visitantes unicos * Versao: 2.1 - Com dupla verificacao (Cookie + IP) */ date_default_timezone_set('America/Sao_Paulo'); $arquivo = __DIR__ . "/contador_dados.json"; if (!file_exists($arquivo)) { $estrutura = [ "total" => 0, "dias" => [], "ips_hoje" => [], "criado_em" => date("Y-m-d H:i:s") ]; file_put_contents($arquivo, json_encode($estrutura, JSON_PRETTY_PRINT)); chmod($arquivo, 0666); } $dados = json_decode(file_get_contents($arquivo), true); if ($dados === null) { $dados = ["total" => 0, "dias" => [], "ips_hoje" => [], "criado_em" => date("Y-m-d H:i:s")]; } $hoje = date("Y-m-d"); $ontem = date("Y-m-d", strtotime("-1 day")); $mesAtual = date("Y-m"); $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown'; $cookieNome = "visitante_unico_site"; if (!isset($dados["ips_hoje"])) $dados["ips_hoje"] = []; if (isset($dados["ultima_limpeza"]) && $dados["ultima_limpeza"] !== $hoje) $dados["ips_hoje"] = []; $dados["ultima_limpeza"] = $hoje; $ipJaContado = in_array($ip, $dados["ips_hoje"]); $temCookie = isset($_COOKIE[$cookieNome]); if (!$temCookie && !$ipJaContado) { $dados["total"]++; if (!isset($dados["dias"][$hoje])) $dados["dias"][$hoje] = 0; $dados["dias"][$hoje]++; $dados["ips_hoje"][] = $ip; file_put_contents($arquivo, json_encode($dados, JSON_PRETTY_PRINT)); setcookie($cookieNome, "1", time() + 86400, "/", "", false, true); } $visitasHoje = $dados["dias"][$hoje] ?? 0; $visitasOntem = $dados["dias"][$ontem] ?? 0; $visitasMes = 0; foreach ($dados["dias"] as $data => $valor) { if (strpos($data, $mesAtual) === 0) $visitasMes += $valor; } $total = $dados["total"]; ?>

Explicação do Código

  • date_default_timezone_set(): Define o fuso horário para horário de Brasília
  • $arquivo: Define o caminho do arquivo JSON que armazenará os dados
  • file_exists(): Verifica se o arquivo já existe, caso contrário cria um novo
  • json_decode(): Converte o JSON em array PHP para manipulação
  • $ip: Captura o endereço IP do visitante para controle adicional
  • $_COOKIE: Verifica se o visitante já foi contado nas últimas 24h
  • in_array(): Verifica se o IP já foi contado hoje (dupla verificação)
  • setcookie(): Define um cookie que expira em 24 horas com flags de segurança
  • json_encode(): Converte o array de volta para JSON e salva no arquivo
Sistema de Dupla Verificação: Este contador usa duas camadas de proteção. 1. Cookie: identifica o navegador do visitante. 2. IP do dia: registra IPs que já visitaram hoje. Isso garante precisão mesmo se o usuário limpar cookies.

🎨 6. Personalização e Uso Avançado

Mudando a Duração do Cookie

Para contar o mesmo visitante apenas 1 vez por hora ao invés de 24h:

setcookie($cookieNome, "1", time() + 3600, "/"); // 3600 = 1 hora

Mudando o Fuso Horário

Para São Paulo/Brasília:

date_default_timezone_set('America/Sao_Paulo');

Para Lisboa/Portugal:

date_default_timezone_set('Europe/Lisbon');

Exibindo em Formato Diferente

<ul> <li>Hoje: <?= number_format($visitasHoje, 0, ',', '.') ?></li> <li>Ontem: <?= number_format($visitasOntem, 0, ',', '.') ?></li> <li>Mês: <?= number_format($visitasMes, 0, ',', '.') ?></li> <li>Total: <?= number_format($total, 0, ',', '.') ?></li> </ul>

Calculando Porcentagem do Dia

<?php $porcentagemHoje = ($total > 0) ? round(($visitasHoje / $total) * 100, 1) : 0; ?> <p>As visitas de hoje representam <?= $porcentagemHoje ?>% do total</p>

7. Perguntas Frequentes

Sim! Este contador usa apenas arquivos JSON para armazenar os dados, não precisa de banco de dados de nenhum tipo.
Sim! Basta deletar o arquivo contador_dados.json que ele será recriado do zero na próxima visita.
Sim! Ele usa dupla verificação (cookies + IP) para identificar visitantes únicos, evitando recargas e proporcionando alta precisão nas estatísticas.
Sim! O sistema verifica tanto o cookie quanto o IP. Se o usuário trocar de VPN mas mantiver o mesmo navegador, o cookie impedirá contagem duplicada. Se trocar de navegador com VPN diferente, será contado como novo visitante.
Sim! Qualquer servidor com PHP 5.4+ e permissão de escrita em arquivos funciona perfeitamente. A HostSSD oferece PHP 5.6 até 8.4 com todas as permissões necessárias.
Abra o arquivo contador_dados.json em um editor de texto. Você verá todos os dias registrados com as contagens individuais.
Sim! Inclua o contador no functions.php do seu tema ou crie um plugin personalizado. Para WordPress recomendamos também avaliar plugins nativos como Jetpack Stats.
O sistema usa file locking automaticamente. Para sites com muito tráfego (10.000+ visitas/dia), recomenda-se migrar para MySQL para garantir integridade dos dados.

🚀 Hospedagem Profissional para Projetos PHP

Hospede seu projeto PHP com a infraestrutura SSD da HostSSD. CloudLinux, CPGuard, PHP 5.6 a 8.4, SSL grátis e suporte 24/7:

🚀 Hospede Seu Projeto PHP com Segurança

Teste 30 dias GRÁTIS. PHP 5.6 a 8.4, SSL grátis, CloudLinux, backup diário e suporte 24/7.

🎁 Começar Teste Grátis Ver Planos e Preços