Aller au contenu
PhantomJoey

.htaccess

Noter ce sujet :

Recommended Posts

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.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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...

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 :?:

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Merci.

Partager ce message


Lien à poster
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 ;)

Partager ce message


Lien à poster
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?!

Partager ce message


Lien à poster
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 !!

Partager ce message


Lien à poster
Partager sur d’autres sites

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!

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai un doute...

Tu essaie sur ton serveur local ? sous windows ?

Essaie en ligne, ca doit marcher ;)

Partager ce message


Lien à poster
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!

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Contenu similaire

    • Par kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • Par leobk
      Bonjour,
       
      J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols
      j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé
      un nombre énorme d'URLs de type :
      www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
      redirigent vers :
      www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
       
      L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques
      Voici la structure d'URL si on fait une recherche de vol sur le site principal :
      https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2
       
       
      existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?
       
       
    • Par PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





    • Par aurelien59
      Bonjour, Je me permet de poster ce problème sur ce forum en plus de l'avoir posté sur un autre. Le problème survient sur un site codé en dur. Depuis plusieurs mois après la mise en place de redirection, je rencontre un problème. La redirection a été mise en place pour rediriger simplement les pages ayant un underscore vers un tiret. Par exemple page_1.php vers page-1.php Dans Google webmasters tools, zone "Exploration", > Erreurs d'exploration > le nombre des URL non suivies à augmenter de manière considérable sur ordinateurs et smartphone.

      Voici un exemple de page contenant l'erreur : page-1.php/page-a.php (alors que la page correcte est page-1.php, la page page-a.php est présente sur le site en racine). Lorsque je clic sur l'url d'erreur, dans l'onglet "Référencée sur". Les url qui apparaissent sont : http://www.monsite.fr/page-2.php/page-b.php'>>http://www.monsite.fr/page-2.php/page-b.php et http://www.monsite.fr/page-2.php/page-c.php'>>http://www.monsite.fr/page-2.php/page-c.php (non indexés sur Google). Voici l'extrait du .htaccess ErrorDocument 404 http://www.monsite.fr/404.phpRewriteEngine onRewriteCond %{HTTP_HOST} ^monsite.fr$RewriteRule ^(.*) http://www.monsite.fr/$1 [QSA,L,R=301]RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]RewriteRule ^(.*)\.php/$ http://www.monsite.fr/$1.php[L,R=301]RewriteRule ^(.*)\.php/(.*)\.php$ http://www.monsite.fr/$1.php[R=301]RewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ /404.php [NC,L] Merci beaucoup pour votre aide.
×