En admettant que tu te construises une table 'dl' avec les champs :
id | url | click
id est un identifiant numerique, url designe le chemin vers le fichier a telecharger et click sert de compteur de click
il te suffit de faire un script comme celui-ci :
J'ai volontairement simplifié les requetes SQL par flemme. A toi de les utiliser avec mysql_query et de bien initier ta connexion au sgbd !
Pour les tests d'existance et de validite des variables ... a toi de gerer les cas possibles et les erreurs que cela pourrait produire.
Fichier : dl.php
<?
$error = false;
// on teste l'existance de id et sa validite (est ce bien un nombre)
if (!isset($_GET["id"]) || !is_numeric($_GET["id"]))
$error=true;
// on verifie que id pointe effectivement vers une entree de notre table
if ($error || "SELECT count(*) FROM dl WHERE id=$_GET['id']" != 1)
$error=true;
if ($error)
{?>
<html>
<body>
Une erreur s'est produite
</body>
</html>
<?}
else
{
// on incremente le compteur
"UPDATE dl SET click=click+1 WHERE id=$_GET['id']"
// on recupere le nom du fichier a envoyer
$file = "SELECT url FROM dl WHERE id=$_GET['id']"
// on envoie maintenant le fichier !
ob_clean();
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-type: application/octet-stream");
header("Content-Length: ".filesize($file);
header("Content-Disposition: attachment; filename=".str_replace(" " , "_" , basename($file)));
flush();
readfile($file);
}
?>
Pour telecharger un fichier il te suffit de mettre en lien :
<a href="dl.php?id=8">mon_fichier.truc</a>
8 etant l'id du fichier mon_fichier.truc dans ta table dl.