Limitation d'accès à un téléchargement

John Smith
WRInaute impliqué
WRInaute impliqué
 
Messages: 526
Inscription: 4 Avr 2007

Limitation d'accès à un téléchargement

Message le Mar Oct 21, 2008 7:50

Bonjour,

Comment limiter l'accès au téléchargement d'un fichier qu'aux personnes qui seraient par exemple inscrites sur mon forum (PHPBB). Sachant que le chemin de ce fichier (zip) est facilement repérable a postériori.

Merci de me m'éclairer de vos conseils


boby55
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 413
Inscription: 2 Avr 2008

re

Message le Mar Oct 21, 2008 14:50

sécurise ton repetoire des zip avec un .htacces s'il s'agit d'un serveur apache.


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Mar Oct 21, 2008 15:28

boby> Ca réponds pas forcément à son soucis.
Les liens pour les zips sont où?

Tu veux que seuls les membres autentifié puisse télécharger le zip ou juste puisse voir les liens?

Pour le second cas je suppose que c'est pas ce que tu veux vu qu'il suffirait de mettre les liens dans une section réservé au membre du forum.
Pour la seconde il faut faire un script PHP qui regarde si tu es connecté, si oui qui te "sert" le fichier.

John Smith
WRInaute impliqué
WRInaute impliqué
 
Messages: 526
Inscription: 4 Avr 2007

Message le Mar Oct 21, 2008 15:41

Bacteries a écrit:boby> Ca réponds pas forcément à son soucis.
Les liens pour les zips sont où?

Tu veux que seuls les membres autentifié puisse télécharger le zip ou juste puisse voir les liens?

Pour le second cas je suppose que c'est pas ce que tu veux vu qu'il suffirait de mettre les liens dans une section réservé au membre du forum.
Pour la seconde il faut faire un script PHP qui regarde si tu es connecté, si oui qui te "sert" le fichier.


Oui c'est bien le premier cas. Mais le soucis c'est que je sais si l'utilisateur est connecté ou pas mais comment lui interdire l'accès au fichier à télécharger (en l'occurence ici un fichier zip) si celui-ci n'est pas connecté mais connait l'adresse directe qui donne accès au fichier.

John Smith
WRInaute impliqué
WRInaute impliqué
 
Messages: 526
Inscription: 4 Avr 2007

Message le Mer Oct 22, 2008 21:16

Eh bien, j'ai trouvé une solution très satisfaisante en partant d'un script PHP qui permet le téléchargement d'un fichier de la manière suivante :

Code: Tout sélectionner
      $file = "nom_du_fichier.zip";
      
      if(file_exists($file) && is_file($file))
      {
         header("Cache-control: private");
         header("Content-Type: application/octet-stream");
         header("Content-Length: ".filesize($file));
         header("Content-Disposition: filename=$file");
         flush();
         $fd = fopen($file, "r");
         echo fread($fd, filesize($file));
         fclose ($fd);
      }


Ensuite mettre autour la tripaille PHPBB ça donne le fichier que j'appelle download.php :
Code: Tout sélectionner
<?php
   define('IN_PHPBB', true);
   $phpbb_root_path = '../forum/';
   include($phpbb_root_path . 'extension.inc');
   include($phpbb_root_path . 'common.'.$phpEx);

   //
   // Start session management
   //
   $userdata = session_pagestart($user_ip, ACCUEIL);
   init_userprefs($userdata);
   //
   // End session management
   //

   if ( !$userdata['session_logged_in'] )
   {
      redirect(append_sid("login.".$phpEx."?redirect=download.php", true));
   }
   else
   {
      $file = "nom_du_fichier.zip";
      
      if(file_exists($file) && is_file($file))
      {
         header("Cache-control: private");
         header("Content-Type: application/octet-stream");
         header("Content-Length: ".filesize($file));
         header("Content-Disposition: filename=$file");
         flush();
         $fd = fopen($file, "r");
         echo fread($fd, filesize($file));
         fclose ($fd);
      }
   }
?>


Quand cette page php est appelé par un lien par exemple, si l'utilisateur n'est pas connecté, il est redirigé sur la page de login de PHPBB et une fois connectée reçoit directement le fichier en téléchargement (c'est peut-être à modifier ça !).
Pour finir je protège par un .htaccess le répertoire qui contient le fichier à télécharger.

On peut aussi faire la même chose avec un PDF qu'on a placé dans un répertoire protégé. On change l'extension du fichier et on remplace :

Code: Tout sélectionner
header("Content-Type: application/octet-stream");


par

Code: Tout sélectionner
header("Content-type: application/pdf");


Voilà, ça f'ra 10 francs !


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