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

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

John Smith
WRInaute impliqué
WRInaute impliqué
 
Messages: 381
Inscription: Mer Avr 04, 2007 11:53

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 discret
WRInaute discret
 
Messages: 84
Inscription: Mer Avr 02, 2008 16:21

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 accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

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: 381
Inscription: Mer Avr 04, 2007 11:53

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: 381
Inscription: Mer Avr 04, 2007 11:53

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 !


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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