[PHP] Forcer le téléchargement d’un Fichier
29 juillet 2008 à 19:25, par ChristopheBonsoir !
Vous disposez par exemple d’un site photo ? et que vous voulez que quand l’utilisateur clique sur un lien, la photo se télécharge et ne s’affiche pas dans son navigateur ? c’est possible !
Voici le code tout chaud :
Voir le Code PHP
function download($file) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file) ); header('Accept-Ranges: bytes'); header('Content-Length: '.filesize($file) ); readfile($file); } if( isset($_GET['f']) && !empty($_GET['f']) ){ switch($_GET['f']){ case 'fichier_01.jpg': // Fichier 01 $file = 'fichier_01.jpg'; break; case 'fichier_02.jpg': // Fichier 02 $file = 'fichier_02.jpg'; break; case 'programme.txt': // Fichier 03 $file = 'programme.txt'; break; // etc... default: $file = ''; break; } if( !empty($file) ){ download($file); } else { echo 'Erreur !'; } } |
Voilà ajoutez des
Voir le Code PHP
case '...': $file = '...'; break; |
à volonté !
Mais par contre, ne faites JAMAIS ça :
Voir le Code PHP
function download($file) { header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file) ); header('Accept-Ranges: bytes'); header('Content-Length: '.filesize($file) ); readfile($file); } download($_GET['f']); |
Pourquoi ? parce-que ce code dispose d’une faille, un utilisateur mal intentionné pourra très très facilement télécharger n’importe quel fichier sur votre serveur, récupérer le fichier de fonctions ou de config, il saura votre mot de passe MySQL, puis, il se connectera, supprimera la base, le site… enfin tout quoi…
Voilà ! soyez tout de même prudent avec ce code et essayez d’hacker votre site, sans aller jusqu’au bout bien sûr ^^