Pour cela, il faut que tu connaisses un peu php/sql ... sans quoi tu n'y arrivera pas.
Voici un exemple de script permettant de télécharger une image, et de compter le nombre de téléchargements :
1) La table mysql:
# Création d'une table pour un petit album photo
CREATE TABLE Album
(id INTEGER AUTO_INCREMENT NOT NULL,
description TEXT,
compteur INTEGER DEFAULT 0,
PRIMARY KEY (id)
)
;
2) Le code html (un lien dans lequel tu attribues l'identifiant du fichier - ici ce sera la photo n°14) :
<a href='ChargerPhoto.php?id=14'>Télécharger cette photo</a>
Bien évidemment, l'idéal est de gérer la liste des fichiers à télécharger de façon dynamique en les lisant dans la table...
3) Le fichier ChargerPhoto.php :
<?php
// Variables
define ('LOGIN',"ton_login");
define ('MDP',"ton_mdp");
define ('SERVEUR',"ton_serveur_sql");
define ('BASE', "ta_base");
function Connexion ($Nom, $MotDePasse, $Base, $Serveur)
{
// Connexion au serveur : erreur
$connexion = mysql_connect ($Serveur, $Nom, $MotDePasse);
if (!$connexion)
{
echo "Désolé, la connexion au serveur " . $Serveur . " est imposible.\n";
exit;
}
// Connexion à la base de données : erreur
if (!mysql_select_db ($Base, $connexion))
{
echo "Désolé, la connexion à la base " . $Base . " est impossible.<br />\n";
echo "Message de MySQL : " . mysql_error($connexion);
exit;
}
// On renvoie la variable de connexion
return $connexion;
}
function ExecRequete ($requete, $connexion)
{
$resultat = mysql_query ($requete, $connexion);
if ($resultat)
return $resultat;
else
{
echo "Erreur dans l'éxécution de la requête '$requete'.<br />\n";
echo "Message de MySQL : " . mysql_error($connexion);
exit;
}
}
// Téléchargement d'une photo identifiée par $_GET['id']
// On commence par incrémenter le compteur
$connexion = Connexion (LOGIN, MDP, BASE, SERVEUR);
$requete = "UPDATE Album SET compteur=compteur+1 "
. "WHERE id='{$_GET['id']}'";
$resultat = ExecRequete ($requete, $connexion);
// On envoie un en-tête forçant le transfert (download)
$fichier = "PHOTOS/" . $_GET['id'] . ".jpg"; // Dans cet exemple, tous les fichiers sont dans le répertoire "PHOTOS" et leur nom est identique à leur identifiant, suivi de .jpg
header ("Content-type: application/force-download");
header ("Content-disposition: filename=$fichier");
// Après l'en-tête on transmet le contenu du fichier lui-même
readFile ($fichier);
?>