Vi sara' sicuramente capitato di imbattervi nel problema di voler contare quante volte vengono scaricati i file che avete messo a disposizione di download sul vostro sito internet (homepage o portale che sia). Da una rapida ricerca sui piu' comuni motori di ricerca (Google, Msn, Bing, Altavista, Yahoo, etc... etc...) avrete notato che per quanto riguarda PHP vi vengono segnalati risultati del tipo Contatore di Download, Contatore di accesso, Contatore di visite e refer, Click counter, Download counter, Hit counter, Contatore di contatti, etc... etc... che non portano ad una rapida risoluzione del vostro problema.
Ecco che vi mostro una rapida soluzione combinata tra PHP e MySQL.
1) Create una tabella avente i seguenti attributi:
- id, di tipo contatore numerico che sara' anche chiave primaria della vostra tabella;
- nome_file, di tipo carattere (serve ad identificare il file);
- contatore, di tipo numerico (serve a memorizzare il numero di download del file).
Codesto file (per esempio PAGINA1.PHP) oltre al normale codice HTML dovra' contenere una semplice query per stampare l'elenco di tutti i file che sono contenuti all'interno della tabella creata al punto 1. A questo punto si dovra' sostituire la classica stringa html per il dowload
Codice: Seleziona tutto
<a href="NOME_FILE">NOME FILE</a>
Codice: Seleziona tutto
<a href="PAGINA2.php?id=<?php echo $row['id'] ?>">NOME FILE</a>
3) Create un file PHP che serve ad inviare il file da scaricare e ad aggiornare il contatore:
Codesto file (per esempio PAGINA2.PHP) innanzitutto recupera l'id del file da scaricare
Codice: Seleziona tutto
$id_file=$_GET['id'];
Codice: Seleziona tutto
$sql = "SELECT nome_file
FROM TUATABELLA
WHERE id=" . $id_file;
Codice: Seleziona tutto
$sql = "UPDATE TUATABELLA
SET contatore = contatore + 1
WHERE id=" . $id_file;
Codice: Seleziona tutto
$directory = "PERCORSO_CARTELLA_CONTENENTE_FILE";
header('Content-Disposition: attachment; filename="'.$row["nome_file"]);
readfile($directory.$row["nome_file"]);