SCRIPT CONTADOR MÚLTIPLES DESCARGAS SIN BASE DATOS
Javascript - PHP - Archivo de Texto
El siguiente contador de descargas puede ser utilizado múltiples veces en la misma página web y cuenta con un código Javascript, un código PHP y un archivo de texto. El incremento en el número de descargas se puede visualizar borrando el caché de la página y refrescándola.
Luego de su primer uso, se puede cambiar el número inicial de descargas desde los archivos de texto que aparecerán en la carpeta "Counters" que se creó vacía.
Empezamos creando 3 archivos:
1- multiples-descargas.html (Donde aparecerán los enlaces para las descargas)
2- download.php
3- script-descargas.js
Adicionalmente, creamos 2 carpetas:
4- "files" (En este directorio se almacenarán los archivos que se van a descargar).
5- "counters" (Carpeta que se deja vacía inicialmente, y que, automáticamente, creará los archivos de texto con la cantidad de veces que se vaya descargando cada uno de los archivos que se encuentran en la carpeta "files".
Todos los archivos y carpetas irán en la raíz de la página (public_html).
1- Código donde se mostrará el contador de visitas "multiples-descargas.html" (Página HTML):
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contador de Descargas</title>
<style>
.download-link {
display: block;
margin: 10px 0}
</style>
</head>
<body>
<h1>Contador de Descargas</h1>
<div id="downloads">
<!-- Los enlaces de descarga se insertarán aquí dinámicamente -->
</div>
<script src="script-descargas.js"></script>
</body>
</html>
2- Crear el archivo "download.php" para manejar las descargas y el contador. (PHP):
<?php
// download.php
if (isset($_GET['file'])) {
$file = $_GET['file'];
$path = 'files/' . $file;
$counterFile = 'counters/' . $file . '.txt';
// Verifica si el archivo existe
if (file_exists($path)) {
// Incrementa el contador de descargas
if (file_exists($counterFile)) {
$count = (int)file_get_contents($counterFile);
$count++;
} else {
$count = 1;
}
file_put_contents($counterFile, $count);
// Envía el archivo al usuario
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
flush(); // Limpia el buffer del sistema
readfile($path);
exit;
} else {
echo "El archivo no existe.";
}
} else {
echo "No se ha especificado ningún archivo.";
}
?>
3- Crear el archivo "script-descargas.js" para cargar los enlaces en la página HTML y los contadores en la carpeta vacía (Javascript):
document.addEventListener('DOMContentLoaded', function() {
const files = ['example1.zip', 'example2.pdf']; // Lista de archivos disponibles
const downloadContainer = document.getElementById('downloads');
files.forEach(file => {
const link = document.createElement('a');
link.href = `download.php?file=${file}`;
link.className = 'download-link';
link.textContent = `Descargar ${file}`;
const counter = document.createElement('span');
counter.className = 'download-count';
counter.id = `count-${file}`;
link.appendChild(counter);
downloadContainer.appendChild(link);
// Obtener el contador de descargas
fetch(`counters/${file}.txt`)
.then(response => response.text())
.then(text => {
const count = parseInt(text) || 0;
counter.textContent = ` (${count} descargas)`;
});
});
});
4- Crear la carpeta "files" y poner dentro los archivos a descargar.
5- Crear la carpeta "counters" y dejarla vacía.
Para confirmar el conteo de las descargas, eliminar las cookies del navegador, borrando el historial de navegación y luego, refrescar la página (Recargarla).
DEMO Contador de Múltiples Descargas
Contador de Multiples Descargas Js, PHP, Txt, SIN Base Datos (2025)