¿Cuál es el mejor método para rastrear descargas directas de archivos? Encontré alguna solución, por ejemplo esta:
http://www.gayadesign.com/diy/download-counter-in-php-using-htaccess/
Pero no funciona para mí, solo obtengo una página en blanco cuando bash descargar un archivo + no sé si es lo suficientemente seguro o no …
Google Analytics solo funciona con javascript, no puede rastrear descargas directas de archivos.
Lo mejor sería una solución alojada segura y propia.
Siéntase libre de usar 🙂
.htaccess:
RewriteEngine on RewriteRule ^(.*).(rar|zip|pdf)$ http://xy.com/downloads/download.php?file=$1.$2 [R,L]
mysql:
CREATE TABLE `download` ( `filename` varchar(255) NOT NULL, `stats` int(11) NOT NULL, PRIMARY KEY (`filename`) )
descargar.php
Fuente – gayadesign.com
Tus registros de Apache deberían contener mucha información, pero creo que lo que estás pidiendo es más control sobre lo que se registra y cuándo. Entonces, lo que quiere hacer es tener dos páginas: una con el enlace al archivo, y la otra que rastrea el archivo, así:
file_page.php
Download File!
descargar.php
// Code to track the file using PHP, whether that means storing data in a database, saving to a log, or emailing you. I'd use a DB, like so: // Prep the vars $file_id = $_GET['file_id']; // You should sanitize this first. $file_path = '/files/'.$file_id.'.pdf'; // Save data to database mysql_query('INSERT INTO download_log SET file_id = '.$file_id.', date_downloaded = '.date('Ymd H:i:s').', user_id = '.$_SESSION['user_id']); // Now find the file and download it header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename='.$file_id.'.pdf); // or whatever the file name is readfile($file_path);
Algo así, de todos modos.
La página estará en blanco cuando esté lista, pero todos los navegadores deberían comenzar a descargar el archivo cuando se cargue la página.
Entonces, lo que estoy haciendo aquí es guardar la ID del archivo, la fecha actual y la ID de usuario de la persona que la descarga (desde una variable $ _SESSION). Es probable que desee almacenar mucha más información, como la dirección IP del usuario, HTTP_REFERRER u otra información $ _SERVER, para que pueda rastrear de dónde vino el usuario y cuándo y qué descargó.
Buena suerte.