<?php
// ------------------------------------------------------------------------- //
// Forcer le téléchargement d'un fichier (une grosse faille en moins) //
// ------------------------------------------------------------------------- //
// Auteur: Samuel Thery <sam007@free.fr> //
// Web: http://www.samsite.fr.st //
// ------------------------------------------------------------------------- //
/*
V'la ce que j'ai retrouvé dans mon grenier, et ça sert !!!
En partant du script de SeB, j'ai préféré protéger les fichiers php, php3 et
.htaccess
Ce serait bête qu'on vous pique vos mots de passe bêtement, non ?
eNjoY iT !
Appel du script :
http://www.votresite.com/download.php?file=./le/chemin/du/fichier.ext
*/
// #######################################
// PAr Samuel Thery. * 25/10/2001
// Sam007@free.fr http://www.samsite.fr.st
// #######################################
// Ce Script Force le téléchargement d'un
// fichier.
// - Message d'erreur si fichier
// inexistant.
// - Protection : téléchargement d'un
// fichier .php ou .htaccess protégé.
// #######################################
// Fonctionne avec PHP / Apache Linux
// Pbs avec PHP / Apache Window$ pour gros
// fichiers.
// #######################################
// Si le fichier existe
If(file_exists($file))
{
// extension du fichier
$decomp = explode(".",$file);
$extfichier = $decomp[count($decomp)-1];
// Fichiers PHP : Ne pas télécharger !!!
If($extfichier != "php" && $extfichier != "php3" && $extfichier != "htaccess")
{
// Envoi des Headers HTTP : recharge / type binaire / taille du fichier
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Content-Type: octet-stream");
header("Content-Length: ".filesize($file));
// Juste le nom du fichier
$decomp = explode("/",$file);
$lefichier = $decomp[count($decomp)-1];
// Envoi du Header HTTP : Nom du fichier
header("Content-Disposition: attachment; filename=".$lefichier);
// Ouverture du fichier
$lecture = fopen($file,"r");
While(!feof($lecture))
{
// Lecture du fichier
$line = fread($lecture,255);
// Envoi du fichier vers le navigateur
Print($line);
flush();
}
}
Else
{
Print("Désolé, vous ne pouvez pas télécharger les fichiers au format PHP ");
Print("protection des données et copyright).");
}
}
Else
{
// Si le fichier n'existe pas
Print("Désolé, le fichier n'a pas été trouvé");
}
?>