Este é um contador muito simples cujo objectivo é contar visitas únicas em vez de hits, e não necessita de SQL e muito menos de cookies.
Apenas necessitamos de um ficheiro de texto para guardar os dados e o ficheiro do código propriamente dito:
<?php
// IceBurn - 2006 //
session_start(); /*Iniciamos a sessão*/
$ficheiro = "contador.txt"; /* O ficheiro de texto onde vamos guardar a contagem, podem colocar na root, desde que especifiquem correctamente o caminho para o mesmo */
ignore_user_abort(false); /* Uma função bastante útil e que eu uso bastante, resumindo mesmo que o utilizador se "desligue" do site, o script continua a correr no servidor */
if (file_exists($ficheiro)) /* Verificar se o ficheiro existe */
{
$contagem = file_get_contents(rtrim($ficheiro)); /* Obtemos o conteúdo do ficheiro utilizando file_get_contents e tambem a função rtrim para remover qualquer espaço existente á direita do número de visitas */
if (!isset($_SESSION["listado"])) /* Se a sessão não estiver definida... */
{
$contagem++; /* ...acrescentamos um valor no contador.*/
}
} else { /* No caso do ficheiro de texto não existir vamos tentar cria-lo. Isto será apenas nessessário em sistemas Unix, pois noutros casos não seria nessesário utilizar as funções touch() (nem chmod() para dar as permissões), a função fwrite (mais em baixo) aliado ao modo em que abrimos o ficheiro (w) encarregar-se-ia disso mesmo.*/
touch($ficheiro); /* Criamos o ficheiro */
chmod($ficheiro, 0777); /* Damos permissões 777 */
$contagem = "1"; // E definimos a primeira visita
}
$f = @fopen ($ficheiro,"w"); /* Abrimos o ficheiro em modo de escrita */
@flock ($f, LOCK_EX); /* flock para evitar que o ficheiro fique corrompido (imaginem se duas pessoas entrarem no site ao mesmo tempo...)*/
@fwrite($f,$contagem); /* Aqui gravamos a contagem no ficheiro */
@flock ($f, LOCK_UN); /* Soltamos o ficheiro... */
@fclose($f); /* e fechamos logo de seguida. */
$_SESSION["listado"] = true; /* Aqui definimos então a sessão */
ignore_user_abort(true); /* (Opcional) */
echo "Esta página foi visitada ".$contagem." vezes."; /* Mostramos o resultado na página */
?>
A utilização disto é básica, podem guardar o ficheiro como contador.php (por exemplo) e depois onde quiserem mostrar os resultados basta por um include:
<?php include("contador.php"); ?>
Para evitar que o ficheiro possa ser acedido directamente, podem guarda-lo na root, como sugeri para o ficheiro de texto, o importante é sempre indicar o caminho (path) correctamente.
Mais simples e eficaz que isto, não deve ser fácil encontrar...
Espero que seja útil a alguem