define('CFG_SYSTEM_FILENAME', 'fichier.ext');
On définit, sous la forme d'une constante, le fichier local (ie : sur le système du serveur) à envoyer. Pour vous ce serait $_GET['file'] comme deuxième paramètre (mais vérifiez que vous n'envoyez pas un fichier autre que désiré - fichiers système notamment).
define('CFG_SEND_FILENAME', CFG_SYSTEM_FILENAME);
Nom sous lequel le fichier sera téléchargé par le navigateur. Pour vous ce serait $_GET['name'] (pour le deuxième paramètre).
Vous n'avez ensuite pas besoin de modifier quoi que ce soit.
define('CFG_FILESIZE', filesize(CFG_SYSTEM_FILENAME));
Taille du fichier que l'on définit sous la forme d'une constante pour réutilisation dans les entêtes.
define('CFG_FILE_MD5', md5_file(CFG_SYSTEM_FILENAME));
Calcul du hash MD5 du fichier (une sorte de somme de contrôle).
define('CFG_DATE_FORMAT', 'D, d M Y H:i:s');
Le format de la date à employer.
Nous nous assurons ainsi de n'afficher aucune erreur. L'affichage d'une erreur (ou tout autre texte) ne nous permettrait pas d'envoyer les entêtes (fonctions header).
ini_set('zlib.output_compression', 0);
On désactive, pour le script courant, la compression des données par le serveur.
Après ce ne sont que des entêtes où l'on retrouve à peu près ce que vous aviez écrit et readfile qui est l'équivalent de votre boucle de lecture du fichier.
Partager