Jump to content
Sign in to follow this  
PhantomJoey

.htaccess

Rate this topic

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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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 :?:

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 ;)

Share this post


Link to post
Share on other 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?!

Share this post


Link to post
Share on other 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 !!

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

J'ai un doute...

Tu essaie sur ton serveur local ? sous windows ?

Essaie en ligne, ca doit marcher ;)

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By cyberdede
      Bonjour à tous

      je voudrais quand je tape https;//monsite/dossier accéder à https;//monsite/dossier/index.php
      or j'accède à https;//monsite/dossier/ avec un 404

      en localhost ca fonctionne

      pour la racine https;//monsite c'est ok

      mon htaccess
       
      RewriteEngine On Options -Indexes RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] RewriteCond %{HTTPS} ^off$ [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] AddDefaultCharset UTF-8 ErrorDocument 404 /404.php  
    • By 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    
    • By 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)?
       
       
    • By 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





×
×
  • Create New...