Aller au contenu

PhantomJoey

Sujets conseillés

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. :huh:

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

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

Guest Hellway

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

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é. :huh:

Les variables que tu me dis d'utiliser ne sont-elles pas celles correspondant à un header sous php? :huh:

Lien vers le commentaire
Partager sur d’autres sites

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

Merci Dan,

Je vais essayer mais je pense que cela devrai marcher. :rolleyes:

Salut Phantomjoey,

Tu veux parier ? :lol: 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

Merci beaucoup ça marche. :up:

Mais j'ai un petit souci: :unsure:

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 :whistling: )

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

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. :blink:

Mon étant le message précédent.

Je sais que je suis compliqué mais moi et le français ça fait 2 :whistling:

Merci

Lien vers le commentaire
Partager sur d’autres sites

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 .... B)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Oui ça j'avais déjà fait et ça tourne impecable B)

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

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

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

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

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

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...