<?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é");
  }

?>