Protection téléchargement de fichier


ladaman
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 9 Nov 2005

Protection téléchargement de fichier

Message le Mer Aoû 09, 2006 16:51

Salut à tous,

J'ai des pages protégées par login et mot de passe stockés dans un BDD et le tout est stocké dans une session quand le visiteur est logué.

Sur une de ces pages protégées, il y a un lien vers un fichier à télécharger.
Ma question est: comment protéger mon fichier ?

Pour l'instant il se trouve dans un répertoire protégé par .htaccess mais du coup il faut s'identifier à nouveau.

Sinon, j'ai entendu parler d'une solution avec la fonction readfile(); (pour pouvoir cacher le chemin de mon fichier) mais je n'ai pas réussi à mettre ça en place avec les tutos que j'ai pu trouver. Vous l'aurez deviné, je ne suis pas vraiment une brute en PHP.

Si quelqu'un peut m'aiguiller, ce serait cool.

Merci d'avance de votre aide.


tom_pascal
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 291
Inscription: 17 Nov 2003

Message le Mer Aoû 09, 2006 18:00

Bonjour,

Pour ne pas avoir de souci avec le readfile, j'avais vu que fread était recommandé.

Pour ma part, je procède ainsi :

Code: Tout sélectionner
if ($_SESSION["ok_le_gars_est_connecte"]){


$filename="un_repertoire_secret/fichier_telecharge.zip";
$apparencename="archive.zip";


   $filesize=filesize($filename);
      
   header("Pragma: public");
   header("Expires: 0"); // set expiration time
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      
   header("Content-Type: application/zip");
   header("Content-Length: ".$filesize);
   header("Content-Disposition: inline; filename=".$apparencename);
   header("Content-Transfer-Encoding: binary");
      
   //Can't use readfile() due to poor controlling of the file download.
   //(IE have this problems)...
   //readfile($filename);
      
   //use fopen() instead of readfile...
   $fp = fopen($filename, 'rb');
   $zip_buffer = fread($fp, $filesize);
   fclose ($fp);
      
   //sleep(1);
      
   print $zip_buffer;
}


ladaman
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 9 Nov 2005

Message le Jeu Aoû 10, 2006 9:16

Salut tom_pacal,

Merci pour ton code c'est exactement ce que je cherche à faire et ça marche nickel.... sur Firefox uniquement.
Internet explorer ne l'entend pas de la même oreille et me propose de télécharger un fichier qui s'appelle: "le-nom-de-la-page". Il ne met même pas d'extension.

Sais tu d'où ça peut venir ?
As tu le même problème ?
Je n'ai pourtant rien changé à ton code.

En tout cas, merci de ton aide. Je vais continuer mes recherches dans cette direction.


ladaman
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 47
Inscription: 9 Nov 2005

Message le Jeu Aoû 10, 2006 14:45

Salut à tous,

J'ai trouvé d'où vient mon erreur.
j'avais mis
$apparencename="un-repertoire/archive.zip";
au lieu de
$apparencename="archive.zip";

Erreur d'inattention qui m'a valu quelques heures de recherches.
Qu'est ce que ça peut être ingrat le PHP !!! :lol:

Merci encore à tom_pascal de sont aide.


tom_pascal
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 291
Inscription: 17 Nov 2003

Message le Ven Aoû 11, 2006 7:40

content d'avoir pu t'être utile :)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités