PhantomJoey Posté 17 Février 2004 Partager Posté 17 Février 2004 J'ai une base de données MySQL. J'ai créer un fichier .htaccess pour protéger un répertoire. Le problème c'est que ce site propose des téléchargement selon l'identification de la personne et donc tous les fichiers du répertoire ne sont pas accessible à tous. Mon fichier .htaccess marche "trop bien" puisque depuis que je l'ai mis les personnes ne peuvent ni accéder au répertoire ni télécharger or mon but est de qu'ils puissent télécharger ce que je leur montre selon leur login sans qu'ils aient access à tout le répertoire. Sachant que je le test pour l'instant en local et sous windows 2000 pro. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 17 Février 2004 Partager Posté 17 Février 2004 Salut PhantomJoey, et bienvenue à bord du Hub ! C'est normal pour le fichier .htaccess .... il est prévu pour protéger sélectivement un répertoire en fonction des autorisations Apache. C'est donc un "tout ou rien" qui ne correspond pas à ton besoin. Ce qu'il te faudra faire, c'est mettre dans ce répertoire un fichier index.php dans lequel tu présentes les liens vers les fichiers à télécharger en fonction de l'identifiant. Les variables qu'il te faudra traiter sont: $PHP_AUTH_USER et $PHP_AUTH_PW Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
Guest Hellway Posté 17 Février 2004 Partager Posté 17 Février 2004 Y'a une autre solution qui consiste à identifier une personne grâce à PHP et de faire un "include" du fichier, mais avant cela de changer le header du document en celui qui correspond à ton fichier. Ca te permet d'utiliser ton propre système d'identification, mais niveau ressources système, je sais pas ce qu'il faut penser... Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 17 Février 2004 Auteur Partager Posté 17 Février 2004 Merci pour vos réponse je vais essayer d'abord celle de Dan et je vous tiendrai au courant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 18 Février 2004 Auteur Partager Posté 18 Février 2004 J'ai essayer de créer un fichier.php pour y mettre les liens vers mes fichiers mais le fichier étant dans le répertoire où il y a le fichier htaccess cela ne marche pas, le problème est le même que précédemment. Peut-être ai-je mal compris ce que tu m'as conseillé. Les variables que tu me dis d'utiliser ne sont-elles pas celles correspondant à un header sous php? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 18 Février 2004 Partager Posté 18 Février 2004 Salut PhantomJoey, C'est vrai que j'aurais pu te mettre un bout de code en exemple, le voici... <?$login="toto";$password="motdepasse";if (($PHP_AUTH_PW==$password) and ($PHP_AUTH_USER==$login)) $auth=true; else $auth=false; if (!$auth) { header( 'WWW-Authenticate: Basic realm="Acces restreint"' ); header( 'HTTP/1.0 401 Unauthorized' ); print "<HTML><HEAD><TITLE> ACCES RESTREINT</TITLE></HEAD><BODY>"; print "<CENTER><BIG>Authentification nécessaire</BIG></CENTER></BODY></HTML>"; exit;}// La suite de ton code ici... si l'authentification a réussi ?> Tu peux aussi remplacer le "if" par un "switch", si tu as plusieurs logins/mots de passe différents. Il faut supprimer le fichier .htaccess, ou en tout cas la partie autentification de celui-ci. Cordialement, Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 18 Février 2004 Auteur Partager Posté 18 Février 2004 Merci Dan, Je vais essayer mais je pense que cela devrai marcher. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 18 Février 2004 Partager Posté 18 Février 2004 Merci Dan,Je vais essayer mais je pense que cela devrai marcher. Salut Phantomjoey, Tu veux parier ? J'ai fermé les balises <BODY> et <HTML>... c'est mieux mais ca marchait sans cela Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 18 Février 2004 Auteur Partager Posté 18 Février 2004 Merci beaucoup ça marche. Mais j'ai un petit souci: Si la personne, une fois identifiée, trouve le répertoire des téléchargements. Eh bien puisqu'elle s'est identifiée elle peut y accéder et tout télécharger à sa guise.(imagine il paie pour une version et il peut toutes les télécharger tranquillement ) Comment fais-t-on pour cacher l'adresse du lien de téléchargement et pour interdire l'access au répertoire malgré une identification déjà faite. Je sais que je cherche la petite bête mais je suis en stage et je tiens à bien faire les choses, je n'aime pas faire quelque chose à moitié. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 18 Février 2004 Auteur Partager Posté 18 Février 2004 Resalut Dan, (c'est encore moi) En fait avec ton code j'ai mon identification (que j'avais déjà faite sur une page.php) et ta boite qui s'affiche. Mon étant le message précédent. Je sais que je suis compliqué mais moi et le français ça fait 2 Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 18 Février 2004 Partager Posté 18 Février 2004 Salut Phantomjoey, En fait, la partie du code qui vient à la place du commentaire en fin de source va afficher ou non les liens vers les fichiers en fonction de l'identifiant $PHP_AUTH_USER. C'est simple à mettre en place... si $PHP_AUTH_USER est "paul" on affiche les liens ou la page pour paul, si c'est "pierre" on affiche la page avec les liens pour pierre. Tu devrais donc avoir un tableau avec les equivalences "utilisateurs <> fichiers téléchargeables". Ensuite, c'est une simple boucle conditionnelle à écrire, ou un "switch()" avec autant de "case" qu'il y a d'utilisateurs différents .... Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 18 Février 2004 Auteur Partager Posté 18 Février 2004 Oui ça j'avais déjà fait et ça tourne impecable Mais le problème c'est si d'une manière ou d'une autre un internaute arrive dans le répertoire où se trouve les fichiers téléchargeables, sans passer par le site (en admettant qu'il trouve l'adresse): comment je fais pour le bloquer Car en testant le site localement j'ai pu accéder à l'arborescence du site ( dossiers,fichiers) à moins que mon hébergeur s'oocupe de cette partie lui-même Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 19 Février 2004 Partager Posté 19 Février 2004 Bonjour, il te faut créer des répertoires en fonction des demandes. Si paul veut charger tel ou tel fichier, tu lui indiques un dossier ./temp/paul/image.gif ainsi, tu es sûr qu'il n'ira pas dans ./admin/ et qu'il n'ira pas non plus dans ./temp/jacques/* Pour ce qui est des fichiers ou autres, tu ne vas pas les mettre dans tous les répertoires... C'est à ce moment là qu'intervient l'url_rewriting, où tu diras : ./temp/paul/une_image.gif ==> ./zone_telechargement/fichier.php?file=une_image.gif&user=paul A+, Anonymus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 20 Février 2004 Auteur Partager Posté 20 Février 2004 Salut anonymous, Il est vrai que c'est simple et que ça me fera une sacrée arborescence mais c'est ingénieux et je n'y avais pas pensé. Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 20 Février 2004 Partager Posté 20 Février 2004 Non, tu n'as pas compris. Tu ne développe pas un sous dossier par membre, c'est mieux que ca ! Tu utilises l'url_rewriting, tel qu'expliqué ici : url_rewriting ou ici : reecriture d'url Ce sera beaucoup plus simple que de faire un répertoire par membre Lien vers le commentaire Partager sur d’autres sites More sharing options...
BZHcool Posté 20 Février 2004 Partager Posté 20 Février 2004 Salut DAN, Sur mon site je voudrais simplement restreindre l'acces à une page à mon entourage... donc un login et un mot de passe! Je pensais avoir trouvé la solution dans ce post avec ton code et non! ça n'ouvre pas ma page... J'ai crée un fichier php que j'appele depuis ma page en question par un include... Le fichier appelé truc.php: <?$login="xxxx";$password="yyyy";if (($PHP_AUTH_PW==$password) and ($PHP_AUTH_USER==$login)) $auth=true; else $auth=false; if (!$auth) { header( 'WWW-Authenticate: Basic realm="Acces restreint"' ); header( 'HTTP/1.0 401 Unauthorized' ); print "<HTML><HEAD><TITLE> ACCES RESTREINT</TITLE></HEAD><BODY>"; print "<CENTER><BIG>Authentification nécessaire</BIG></CENTER></BODY></HTML>"; exit;}?> et la page : <?php include('truc.php');?><html><head><title>un titre de page</title><meta name="robots" content="nofollow,noindex">et le reste du code Lorsque je rentre le pass il n'en veut pas et reste sur la fenetre d'authentification... Pourquoi/Comment?! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 20 Février 2004 Partager Posté 20 Février 2004 Bonjour, j'ai juste modifié deux petits trucs, et ca marche chez moi : <?$login="xxxx"; $password="yyyy"; if (isset ($PHP_AUTH_PW) && isset($PHP_AUTH_USER) && ($PHP_AUTH_PW==$password) and ($PHP_AUTH_USER==$login)) $auth=TRUE; else $auth=FALSE; if (!$auth) { header( "WWW-Authenticate: Basic realm=\"Acces restreint\"" ); header( 'HTTP/1.0 401 Unauthorized' ); print "<HTML><HEAD><TITLE> ACCES RESTREINT</TITLE></HEAD><BODY>"; print "<CENTER><BIG>Authentification nécessaire</BIG></CENTER></BODY></HTML>"; exit; } ?> Anonymus. EDIT = Attends, ca marche pas, c'est normal.... je recommence !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
BZHcool Posté 20 Février 2004 Partager Posté 20 Février 2004 Je viens d'essayé également de mon côté avec ton code et je te confirme que le résultat est le même qu'au début... Je vais fouiller un peu sur GG.... qui sait! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 21 Février 2004 Partager Posté 21 Février 2004 J'ai un doute... Tu essaie sur ton serveur local ? sous windows ? Essaie en ligne, ca doit marcher Lien vers le commentaire Partager sur d’autres sites More sharing options...
BZHcool Posté 21 Février 2004 Partager Posté 21 Février 2004 Mon test est grandeur nature c'est directement en ligne que je le fais... Je crois que je vais faire par Base de données si çà continue... Cà doit pas etre compliquer a faire... du moins je l'espère! Lien vers le commentaire Partager sur d’autres sites More sharing options...
PhantomJoey Posté 23 Février 2004 Auteur Partager Posté 23 Février 2004 Salut BZHcool, Si tu n'y arrive pas par base de données dis le je pourrais t'aider car c'est comme ça que j'ai fais. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant