|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
bonjour,
je suis nouveau dans le domaine et je viens de développer un site web avec Apache et php. mon but étant d'empécher aux utilisateurs non authentifié d'accéder à certaines ressources (fichiers .txt, .doc, etc.) en tapant simplement leur url dans leur navigateur, j'ai mis ces ressources dans un répertoire de mon serveur web et je l'ai protégé avec un fichier .htaccess dont voici le contenu: Code :
j'ai fait ce script afin de pouvoir contrôler si l'utilisateur qui demande la ressource dispose des droits nécessaires. mon problème est que une fois que j'ai vérifier les droits de l'utilisateur, je ne sais pas comment lui envoyer le fichier qu'il a demandé. avez-vous une idée sur la façon dont je pourrais réaliser cela ? merci d'avance :-) |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : juin 2005 Messages : 572 ![]() |
Une simple redirection vers le fichier en question devrait suffir je pense.
En revanche tu ne pourras pas faire sauter la demande de confirmation à l'utilisateur
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ? Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée" |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
merci pour ta réponse.
pour ce qui est de faire sauter la demande de confirmation à l'utilisateur, ce n'est pas un problème. j'ai déja essayer de faire une redirection avec la fonction header vers le fichier demandé, mais cela ne marche pas. je pense que cela est du au fait que la redirection faites avec header est elle même redirigée vers mon script, et ainsi de suite.... ça tourne en boucle. aurais-tu une autre idée ? |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : juin 2005 Messages : 572 ![]() |
Une copie dans un répertoire temporaire pourrait être une solution ?
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ? Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée" |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
qu'entend-tu par une copie dans un répertoire temporaire?
le fait de copier le fichier dans un autre répertoire et de faire une redirection vers ce fichier? --> ce fichier va être accessible dans le répertoire temporaire je pense. et je voudrais éviter cela. |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Développeur Web Inscription : avril 2005 Messages : 726 ![]() |
Tu devrais sans doute modifier ta condition de rewrite.
Pourquoi ne pas plutôt définir download.php comme page par défaut (comme si tu l'appelais index.php). Je sais qu'on peut le faire, mais je sais plus comment |
|
|
00
|
|
|
#7 | |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
Citation:
pour ce qui est du rewrite, que mettrais-tu? |
|
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Développeur Web Inscription : avril 2005 Messages : 726 ![]() |
ben ça supprimerais la boucle, le voilà l'avantage...
edit : pour le rewrite, je ne sais pas! En fait, je voulais dire retirer le rewrite pour mettre DirectoryIndex a la place. |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
le probleme c'est que le rewrite je ne pense pas pouvoir le supprimé car c'est lui qui me permet de redirigé toutes les requêtes vers mon script.
le fait de mettre download.php comme page par défaut ne reviens pas au même que de faire un rewrite. il permet uniquement de choisir une page lorsque celle-ci n'est pâs précisé dans l'URL, mais ne permet pas de faire une redirection vers cette page lorsque l'on demande un des fichiers du répertoire. je ne sais pas si c'est moi qui comprend pas ce que vu veux dire, où si tu n'as pas compris ce que je voulais. peut-être que je me suis mal exprimé si c'est moi qui comprend pas, pourrais-tu me reexpliquer de façons plus détaillé le fonctionnement de ce que tu propose. merci |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Développeur Web Inscription : avril 2005 Messages : 726 ![]() |
Non, tu as raison, je proposais cette solution juste au cas où. Du coup, je ne vois pas comment faire, mais de toute façon il faut que tu change ton rewrite rule, ça il n'y a pas de doutes...
|
|
|
00
|
|
|
#11 | ||
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
Bon ben j'ai essayé de modifier mon htaccess comme cela.
Code :
la prémière ligne fais une redirection permanente vers le script download.php lorsque l'on demande la ressource. Comme avant, ce script vérifie toujours les droits d'accés et effectue une redirection (avec la fonction header) vers le fichier demandé, en ajoutant OK à la fin de l'URL. ainsi, lors de la nouvelle requete (lors de la redirection), la première RewriteRule est ignoré, et la deuxième prend le relais et effectue une nouvelle redirection vers le fichier initialement demandé. Pourtant cela ne marche pas et j'ai l'impression que l'on rentre dans une boucle sans fin, c'est à dire que l'on est redirigé vers download.php, puis vers le fichier, etc.... par pitié aidez moi car je crois que je vais péter un cable
|
||
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
si ma solution n'est pas bonne, je pensait à une autre.
connaissez-vous une fonction php (ou une autre méthode) qui fasse ouvrir une boite de dialogue sur le client pour lui demander s'il souhaite ouvrir ou enregistrer un fichier. comme ça il me suffirait d'utiliser cette fonction dans mon script download.php j'attend votre réponse |
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() Développeur Web Inscription : avril 2005 Messages : 726 ![]() |
Rajoute un [L] a la fin de ta 2ème règle, il me semble que c'est ce qui permet de ne plus réécrire ensuite. A vérifier.
|
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
c'est ce que je pensait aussi, j'avais déjà essayé, mais en fait ça ne marche pas mieux.
je pense que [L] evite simplement de parcourir les autres règles du htaccess pour cette requete, mais lorsque l'on fait une redirection (comme à la fin de la deuxième règle), le processus de rewriting recommence à zéro. pour ce qui est de l'autre solution que j'ai proposé avec une fonction php, as tu une idée ? |
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 41 ![]() |
Bonjour,
N'est-il pas préférable d'interdire le répertoire à tout internaute et permettre le téléchargement seulement via le script php qui lui a les droits de proposer à l'internaute le fichier? |
|
|
00
|
|
|
#16 | ||||
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
j'avais déjà envisagé cette solution, mais le problème c'est que lorsque je faisait une redirection avec la fonction headers à l'intérieur de ce script, l'acces été toujours refusé par le serveur.
c'était comme si c'était le client qui avait fais la demande. pour preuve, lorque j'autorisait le client cela marchait. voici comment j'avais rempli mon htaccess Code :
Code :
|
||||
|
|
00
|
|
|
#17 | |
|
Membre chevronné
![]() Développeur Web Inscription : avril 2005 Messages : 726 ![]() |
Citation:
|
|
|
|
00
|
|
|
#18 | ||
|
Membre habitué
![]() Inscription : mars 2007 Messages : 87 ![]() |
bonjour,
utilise readfile dans ton fichier download.php. Par exemple (exemple issu de php.net): Code :
|
||
|
|
00
|
|
|
#19 | |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 47 ![]() |
Citation:
ps: supergogol je vais essayer ta solution tout de suite |
|
|
|
00
|
|
|
#20 | |
|
Nouveau Membre du Club
![]() Inscription : mars 2007 Messages : 41 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com