Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
896 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème avec un .htaccess

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec un .htaccess

n°1773971
fade2black
Posté le 17-08-2008 à 23:33:52  profilanswer
 

Bonsoir à tous!
 
Je cherche à protéger l'accès à un dossier contenant des téléchargements.
Je ne veux pas passer par une authentification mais par (si c'est possible) la provenance des utilisateurs.
Je m'explique : j'aimerais interdire l'accès direct au fichier de type www.monsite/downloads/fichier.doc et obliger l"utilisateur a passer par la section de téléchargement du site de type www.monsite/downloads.php
 
J'ai alors créé un fichier .htaccess que voici
 

Code :
  1. Order Deny,Allow
  2. Deny from all
  3. Allow from IP du site


 
Mais ça ne marche pas...  
 
Je me suis basé sur un code qui utilisé le fichier .htaccess suivant :
 

Code :
  1. Order Deny,Allow
  2. Deny from all
  3. Allow from localhost 127.0.0.1


 
qui ne marchait pas non plus...
 
Donc voila si vous pouviez m'aiguiller ça serait très sympa!
 
Merci par avance!
 

mood
Publicité
Posté le 17-08-2008 à 23:33:52  profilanswer
 

n°1773972
Profil sup​primé
Posté le 17-08-2008 à 23:45:12  answer
 

Tu mets çà dans ton dossier downloads :

Code :
  1. order deny, allow
  2. deny from all

n°1774028
fade2black
Posté le 18-08-2008 à 10:07:16  profilanswer
 

Bonjour,
J'ai suivi votre conseil et ça ne marche toujours pas (error 403)
Ce qui me semble en fin de compte assez logique étant donné que aucune ligne allow n'est renseignée...
Auriez vous une autre idée?
Merci encore!

n°1774076
Profil sup​primé
Posté le 18-08-2008 à 12:52:37  answer
 

bah y'a pas besoin de "allow" puisque tu veux que personne n'y accède. Donc çà marche !
en tapant  
www.monsite/downloads/fichier.doc : erreur 403 !
en tapant :
www.monsite/download.php?file=fichier.doc : çà marche !
(PHP peut accéder aux fichiers malgré la restriction htacess)

n°1774147
fade2black
Posté le 18-08-2008 à 15:52:14  profilanswer
 

Et bien non car la page PHP va chercher les fichiers dans un dossier qui est protégé par ce .htaccess ...

n°1774167
Profil sup​primé
Posté le 18-08-2008 à 16:23:52  answer
 

fade2black a écrit :

Et bien non car la page PHP va chercher les fichiers dans un dossier qui est protégé par ce .htaccess ...


non, fait au moins un test :
place un fichier php en dehors de ton dossier downloads avec ce code :
 

Code :
  1. <?php
  2. header('Content-Type: application/ms-word');
  3. readfile('downloads/fichier.doc');
  4. ?>

n°1774269
fade2black
Posté le 18-08-2008 à 22:01:01  profilanswer
 

Bonsoir,  
 
Tout d'abord merci de votre aide!
J'ai créé le fichier en question mais quand je cherche à le lancer, mon naviguateur cherche à la télécharger !! Le PHP pas le fichier cible... Savez vous d'ou ça peut venir?
Merci !

n°1774281
Profil sup​primé
Posté le 18-08-2008 à 22:42:36  answer
 

tu as bien mis la bonne url de ton fichier ? rajoutes çà :
header("Content-Disposition: attachment; filename=fichier.doc" );

n°1774301
fade2black
Posté le 19-08-2008 à 00:21:38  profilanswer
 

Tu as effectivement raison! Merci encore.
Je vais essayer de revoir mon fichier downloads.php pour trouver l'origine et je te tiens au courant!
 
Voici le passage concernant le téléchargement :  
 
Je n'arrive pas à trouver ce qui fait que je retombe toujours sur une erreur 403...
 

Code :
  1. /*
  2.  * not it is time and we are ready to rumble: send the file to the user client to download it there!
  3.  */
  4.  if ($dl_file['extern'])
  5.  {
  6.   header("HTTP/1.1 301 Moved Permanently" );
  7.   header("Location: ".$dl_file['file_name']);
  8.  }
  9.  else if ($status)
  10.  {
  11.    $dl_file_url = $dl_config['dl_path'] . $index[$cat_id]['cat_path'] . $dl_file['file_name'];
  12.   $dl_file_size = sprintf("%u", @filesize($dl_file_url));
  13.   $mem_limit = ini_get('memory_limit');
  14.   $last = strlen($mem_limit) - 1;
  15.   $max_mem_limit = (int)$mem_limit;
  16.   switch($mem_limit{$last})
  17.   {
  18.    case 'G':
  19.     $max_mem_limit *= 1024;
  20.    case 'M':
  21.     $max_mem_limit *= 1024;
  22.    case 'K':
  23.     $max_mem_limit *= 1024;
  24.   }
  25.   if ($dl_file_size > $max_mem_limit || $dl_config['dl_method'] == 3)
  26.   {
  27.    $board_url = generate_board_url();
  28.    if ($board_url{strlen($board_url)-1} <> '/')
  29.    {
  30.     $board_url .= '/';
  31.    }
  32.    $dl_file_url = $board_url . $dl_config['download_dir'] . $index[$cat_id]['cat_path'] . $dl_file['file_name'];
  33.    $dl_file_url = str_replace(" ", "%20", $dl_file_url);
  34.    header("HTTP/1.1 301 Moved Permanently" );
  35.    header("Location: " . $dl_file_url);
  36.   }
  37.   else
  38.   {
  39.    if ($dl_config['dl_method'] == 1)
  40.    {
  41.     header("Content-Type: application/octet-stream" );
  42.     header("Content-Disposition: attachment; filename=\"".$dl_file['file_name']."\"" );
  43.     readfile($dl_file_url);
  44.    }
  45.    else if ($dl_config['dl_method'] == 2)
  46.    {
  47.     $size = sprintf("%u", @filesize($dl_file_url));
  48.     header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
  49.     header("Content-Type: application/octet-stream" );
  50.     header("Content-Length: ".$size);
  51.     header("Content-Transfer-Encoding: binary" );
  52.     header("Content-Disposition: attachment; filename=\"".$dl_file['file_name']."\"" );
  53.     if ($size > $dl_config['dl_method_quota'])
  54.     {
  55.      $dl_mod->readfile_chunked($dl_file_url);
  56.     }
  57.     else
  58.     {
  59.      readfile($dl_file_url);
  60.     }
  61.    }
  62.   }
  63.  }
  64.  else
  65.  {
  66.   trigger_error('DL_NO_ACCESS');
  67.  }
  68. }
  69. else
  70. {
  71.  trigger_error('DL_NO_ACCESS');
  72. }
  73. exit;
  74. }
  75. else if ($view == 'comment')
  76. {


Message édité par fade2black le 19-08-2008 à 00:38:39
n°1775026
basile238
Posté le 20-08-2008 à 16:25:43  profilanswer
 

fade2black a écrit :

Bonsoir,

 

Tout d'abord merci de votre aide!
J'ai créé le fichier en question mais quand je cherche à le lancer, mon naviguateur cherche à la télécharger !! Le PHP pas le fichier cible... Savez vous d'ou ça peut venir?
Merci !

 

C'est normal que ton navigateur cherche à télécharger un fichier puisque tu as le header "Content-Type: application/ms-word". Ton navigateur croit donc à un fichier Word et le télécharge.
C'est le comportement que tu recherches non ?
Ton script php lit le vrai fichier word dans ton dossier protégé puis se "fait passer" pour un fichier word (via le header) et renvoie ce qu'il a lu.
Je pense que ton problème est résolu ou alors il y a un truc qui m'échappe.

 


Message édité par basile238 le 20-08-2008 à 16:26:19
mood
Publicité
Posté le 20-08-2008 à 16:25:43  profilanswer
 

n°1775475
fade2black
Posté le 21-08-2008 à 13:57:52  profilanswer
 

Merci pour ces explications, je dois vous avouer que je n'ai pas tout compris... Le problème reste pourtant le même et je me retrouve avec une erreur 403 quand je cherche à télécharger le fichier.
je cherche effectivement que le script php télécharge le fichier mais éviter qu'on puisse directement dans le dossier chercher le fichier. C'est pour ça que j'ai mis un .htaccess dans ce dossier avec tout simplement "Deny from all" et je comprends pas pourquoi mon fichier php ne passe pas au delà de ce .htaccess. Ca devrait être le cas non?
Bonne journée à vous!

n°1775589
basile238
Posté le 21-08-2008 à 17:04:17  profilanswer
 

Essaie ça:

 
Code :
  1. <?php
  2. header('Content-Type: application/ms-word');
  3. echo file_get_contents('downloads/fichier.doc');
  4. ?>
 

Attention: la ligne header('Content-Type: application/ms-word'); doit apparaître avant toute chose. Fait gaffe de ne rien mettre avant (notamment pas d'espace avant le tag <?php)

 

Vérifie aussi que les permissions en lecture (chmod) sont mises à la fois pour le dossier downloads et pour fichier.doc, sans quoi ton script ne pourra pas lire le fichier.


Message édité par basile238 le 21-08-2008 à 17:08:08
n°1782846
DannyElfma​n
Kinrick o Scotland
Posté le 04-09-2008 à 21:25:48  profilanswer
 

Bonjour,  
 
J'ai moi aussi un problème de .htaccess !
 
Je ne protège qu'un seul dossier. Sous firefox, pas de problème, sous IE, j'ai un prompt dès l'ouverture du site ...
 
Mon fichier htaccess :
 

Code :
  1. AuthName "Page d'administration protégée"
  2. AuthType Basic
  3. AuthUserFile "/lecheminabsoludemonfolder/.htpasswd"
  4. Require valid-user


 
mon .htpasswd : juste une ligne login:passwd
 
 


---------------
Blood is rushing into your muscles and that's what we call The Pump. Your muscles get a really tight feeling, like your skin is going to explode any minute ...
n°1783571
DannyElfma​n
Kinrick o Scotland
Posté le 07-09-2008 à 10:23:15  profilanswer
 

Personne ,  :sweat:


---------------
Blood is rushing into your muscles and that's what we call The Pump. Your muscles get a really tight feeling, like your skin is going to explode any minute ...
n°1783573
Profil sup​primé
Posté le 07-09-2008 à 10:44:46  answer
 

c'est quoi ton problème ? tu voudrais pas de prompt à l'accès de ton dossier ?

n°1783752
DannyElfma​n
Kinrick o Scotland
Posté le 08-09-2008 à 08:07:54  profilanswer
 

En fait, je veux un prompt juste pour l'accès au folder d'admin. Sous FF, ça fonctionne. Sous IE, j'ai un prompt dès la page d'index du site (lien dans ma signature)  :??:


---------------
Blood is rushing into your muscles and that's what we call The Pump. Your muscles get a really tight feeling, like your skin is going to explode any minute ...
n°1784135
Profil sup​primé
Posté le 08-09-2008 à 18:34:51  answer
 

réfléchis un peu, c'est normal...
Tu n'as pas bien compris le rôle du htaccess et la relation client-serveur.
HTACCESS s'applique aux requêtes du client. Si l'accès à l'image est fait depuis le client (via requête HTTP), le HTACCESS va demander une autorisation d'accès. Si c'est depuis le serveur (via PHP par exemple), l'accès sera autorisé.
Il faut que tu passes par une page PHP qui affiche dynamiquement l'image (avec readfile()) et qui soit ciblée par l'attribut src de ton tag img (dans ta page d'accueil).
 
NOTE : chez moi, (FF), le prompt s'affiche en plus. Et c'est normal.
 
Ca donne :
 
image.php

Code :
  1. <?php
  2. $img  = $_GET['img'];
  3. $size = getimagesize($img);
  4. if($size[0] && $size[1]) {
  5.     $mime = $size['mime'];
  6.     header("Content-Type: $mime" );
  7.     readfile($img);
  8. } else {
  9.     header("HTTP/1.0 404 Not Found" );
  10. }
  11. ?>


 
index.html
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Titre</title>
  6. </head>
  7.  
  8. <body>
  9. Image :
  10. <img src="image.php?img=dossier/image.jpg" />
  11. </body>
  12. </html>


Message édité par Profil supprimé le 08-09-2008 à 18:46:45
n°1784172
DannyElfma​n
Kinrick o Scotland
Posté le 08-09-2008 à 20:45:35  profilanswer
 

OK...
 
Finalement, j'ai la même erreur sous FF. Je suppose que j'avais un cookie d'authentification quelque part. Aujourd'hui, en purgeant tout, j'ai aussi un prompt.
 
Effectivement, il me manque de grosses notions. Mais j'ai du mal à trouver de l'info claire et pas trop "dense" ...
 
Je viens de lire pas mal de choses mais j'ai un souci. Comment empêcher l'accès aux répertoires de mon site si tout est en html ?


---------------
Blood is rushing into your muscles and that's what we call The Pump. Your muscles get a really tight feeling, like your skin is going to explode any minute ...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Problème avec un .htaccess

 

Sujets relatifs
Problème redirection 301 htaccessProblème avec .htaccess simple
Encore un probleme de .htaccess[Resolu] Probleme redirection .htaccess
Probleme de htaccessprobleme avec htaccess
Problème d'identification avec htaccessProblème avec PHP et .htaccess
Problème .htaccess il ne marche pas ?!![URL Rewriting] Problème de .htaccess sous Apache 2 ...
Plus de sujets relatifs à : Problème avec un .htaccess


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR