CURSO 2025/2026 -- DAW 2 -- I.E.S. LOS SAUCES
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<link rel="icon" type="image/png" href="../webroot/media/favicon/favicon-32x32.png">
<link rel="stylesheet" href="../webroot/css/estilos.css">
<title>Gonzalo Junquera Lorenzo</title>
<style>
main{
margin: 20px 20px 20px 100px;
}
h3{
margin-top: 20px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div id="aviso">CURSO 2025/2026 -- DAW 2 -- I.E.S. LOS SAUCES</div>
<nav>
<div><a href="../indexProyectoTema3.php">Volver</a></div>
<h2> <a href="../indexProyectoTema3.php">Tema 3</a> - Ejercicio 13</h2>
<h2>Gonzalo Junquera Lorenzo</h2>
</nav>
<main>
<?php
/**
* @author: Gonzalo Junquera Lorenzo
* @since: 19/10/2025
* 13.Crear una función que cuente el número de visitas a la página actual desde una fecha concreta.
*/
/**
* Registra la visita actual y cuenta las visitas desde una fecha específica.
*
* @param string $fecha_inicio Fecha en formato 'YYYY-MM-DD' a partir de la cual contar.
* @param string $archivo_log Ruta al archivo de registro de visitas.
* @return int El número de visitas registradas desde la fecha de inicio.
*/
function contar_visitas($fecha_inicio) {
// Archivo donde se va a guardar los timestamp actual
$archivo_log = '../tmp/visitas.log';
// Obtener el timestamp actual (segundos desde 1970)
$timestamp_actual = (new DateTime())->getTimestamp();
// Añadir el timestamp actual al archivo de log en una nueva línea
// FILE_APPEND asegura que se añade al final sin sobreescribir
// LOCK_EX bloquea el archivo para el usuario actual mientras se esta escribiendo
file_put_contents($archivo_log, $timestamp_actual . "\n", FILE_APPEND | LOCK_EX);
// Convertir la fecha de inicio a timestamp para hacer la comparación numérica
$timestamp_inicio = (new DateTime($fecha_inicio))->getTimestamp();
// Obtener el contenido completo del archivo de log
$contenido_log = @file_get_contents($archivo_log);
// Si el archivo no existe o está vacío, no hay visitas que contar
if (empty($contenido_log)) {
return 0;
}
// Separar el contenido en un array, donde cada elemento es un timestamp
$aVisitas_registradas = explode("\n", trim($contenido_log));
// Recorrer los timestamps del log
$contador = 0;
foreach ($aVisitas_registradas as $timestamp_visita) {
// Aseguramos que la línea es un número válido y es posterior o igual al inicio
if (is_numeric($timestamp_visita) && $timestamp_visita >= $timestamp_inicio) {
$contador++;
}
}
return $contador;
}
// --- EJEMPLO DE USO ---
date_default_timezone_set('Europe/Madrid');
$fecha_corte = '2025-10-15'; // La fecha desde la cual queremos contar
// 1. Llamar a la función para registrar la visita y obtener el conteo
$total_visitas = contar_visitas($fecha_corte);
// 2. Mostrar el resultado
echo "<h3>Contador de Visitas</h3>";
echo "<p>Desde el <b>" . $fecha_corte . "</b>, la página ha tenido un total de <b>" . $total_visitas . "</b> visitas.</p>";
?>
</main>
</body>
</html>