<?php
/**
* Contador de visitas en PHP 8 con fichero de texto
*
* Guarda el recuento en un fichero .txt y muestra el número formateado.
* No necesita base de datos.
*
* Código mejorado por David Carrero https://carrero.es
* Fecha de modificación: 2026-05-09
*
* Uso:
* Incluye este archivo en cualquier página:
* <?php include 'contador.php'; ?>
*
* O llámalo directamente para ver el contador:
* php contador.php
*/
/**
* Lee, incrementa y guarda el contador en un fichero.
* Devuelve el nuevo valor.
*/
function incrementar_contador(string $fichero = 'visitas.txt'): int
{
// Bloqueo exclusivo para evitar condiciones de carrera en concurrencia alta
$fp = fopen($fichero, 'c+');
if ($fp === false) {
return 0;
}
flock($fp, LOCK_EX);
$visitas = (int) fread($fp, 20);
$visitas++;
rewind($fp);
fwrite($fp, (string) $visitas);
ftruncate($fp, ftell($fp));
flock($fp, LOCK_UN);
fclose($fp);
return $visitas;
}
/**
* Devuelve el valor actual sin incrementar (solo lectura).
*/
function leer_contador(string $fichero = 'visitas.txt'): int
{
if (!file_exists($fichero)) {
return 0;
}
return (int) file_get_contents($fichero);
}
// --- Demo ---
$visitas = incrementar_contador('visitas.txt');
echo "<!DOCTYPE html>n";
echo "<html lang='es'><head><meta charset='UTF-8'>";
echo "<title>Contador de visitas</title>";
echo "<style>
body { font-family: system-ui, sans-serif; display:flex; flex-direction:column;
align-items:center; justify-content:center; min-height:100vh; background:#f5f7fa; gap:1rem; }
.caja { background:white; border-radius:12px; box-shadow:0 4px 20px rgba(0,0,0,.1);
padding:2.5rem 4rem; text-align:center; }
.numero { font-size:4rem; font-weight:800; color:#2563eb; line-height:1; }
.etiqueta { font-size:.95rem; color:#6b7280; margin-top:.5rem; }
</style></head><body>";
echo "<div class='caja'>";
echo " <div class='numero'>" . number_format($visitas, 0, ',', '.') . "</div>";
echo " <div class='etiqueta'>visitas totales</div>";
echo "</div>";
echo "<p style='color:#9ca3af;font-size:.8rem;'>Fichero: visitas.txt</p>";
echo "</body></html>n";
Contador de visitas en PHP 8
Contador de visitas sencillo en PHP 8 que guarda el recuento en un fichero de texto. Sin base de datos. Usa bloqueo exclusivo de fichero para evitar condiciones de carrera en servidores con concurrencia alta. Muestra el número formateado con separadores de miles en una página HTML mínima lista para incrustar en cualquier proyecto.
Descargar adjuntos
COMPARTE ESTE TUTORIAL
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP