Version complète: sur le forum Webmaster Hub : Php et htaccess
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
conceptone
Bonjour,
Je souhaiterais protéger des fichiers par Htaccess et en fonction des utilisateurs je voudrais que mon script php leurs donne accés à ces fichiers ou non.
Est ce possible ?
En bref je voudrais que certains de mes utilisateurs aient accés à des fichiers et d'autres non ( un utilisateur peut avoir accés a un seul fichier, 2, 3... c'est trés divers et doit etre dynamique )
Si vous avez également d'autres solutions je suis prenneur.
Merci beaucoup pour votre réponse,
Cordialement.
sarutobi
Hello,

Est-ce qu'un FTP ne répondrait pas mieux à tes besoins ? Tu parles d'un accès aux fichiers ici donc cela me semble plus adapté. En revanche s'il s'agissait d'un accès à du contenu (pages, articles, etc...) tu pourrais essayer de chercher un module de gestion de droit qui serait efficace.

Cdlt
conceptone
Je fais le site internet d'un ami qui est compositeur / chanteur.
Il aura donc des mp3 libre d'écoute mais limité dans le temps (non protégés).
Par l'intermédiaire de allopass les personnes pourront acheter ses musiques et donc avoir la possibilité de télécharger uniquement les musiques qu'il a acheté.
destroyedlolo
J'imagine que tes utilisateurs sont dans une base de donnees, dans ce cas, tu peux regarder mod_dbd d'apache 2.2 ... mais quant une nouvelle version d'apache sortira car la version actuelle est completement buggee et ne fonctionne pas evil.gif

Pour palier a ce probleme, je fais l'authentification directement en PHP :

CODE
function Authentification($usr, $func=false, $realm='Mais qui etes vous'){
    global $_SERVER;

    if(!$usr->ok() ||            // L'utilisateur n'existe pas
    !$usr->verifPasswd($_SERVER['PHP_AUTH_PW']) ||    // Le mot de passe ne correspond pas
    ($func && !$usr->$func())    // L'utilisateur n'a pas la bonne capacite
    ){
        $usr->invalide();    // Pour etre sur que l'utilisateur ne peut rien faire.
        header("WWW-Authenticate: Basic realm=\"$realm\"");
        header('HTTP/1.0 401 Unauthorized');
        die('*F* Vous devez vous authentifier pour acceder a cette page.');
    }

Bon, faut adapter et je ne vais pas sortir tout mon code (trop long whistling.gif ) mais en resume, $usr est une classe qui est initialisee d'apres la valeur de $_SERVER['PHP_AUTH_USER']. Elle contient plusieurs methodes pour qualifier l'utilisateur et en particulier,

CODE
    function verifPasswd( $pw ){
        return(crypt($pw, $this->getPasswd()) == $this->getPasswd());
    }


quio verifie que le mot de passe fourni par le visiteur correspond bien a celui stoque dans la database (qui est crypte), recupere par la methode getPasswd().

A nouveau, je ne rentre pas dans les details, c'est juste pour te donner une idee comment ca fonctionne smartass.gif

Lolo
destroyedlolo
Suite a mes echanges par MP avec conceptone.

CITATION
Pour des téléchargements de mp3 est ce que ça les protèges ?
Cad si quelqu'un a un lien direct a t il le droit de les prendre ou pas ? http://mondi.com/musique.mp3
Il faudrait que le système protège le mp3 en fonction de mon programme php (qui gerre les utilisateurs)


Alors, c'est tres simples, dans le repertoire des .mp3, il faut rajouter un .htaccess comme suit :
CODE
Action audio/mpeg   protmp3.php


et un protmp3.php qui contient un code du genre :

CODE
<?php
Authentification( new Utilisateur($_SERVER['PHP_AUTH_USER'])); // Fonction d'authentification du post precedent

header('content-type: audio/mpeg');
readfile($_SERVER['PATH_TRANSLATED']);
?>


A noter que la fonction Authentification() comme je l'ai code ci-dessous ne rend la main que si l'utilisateur est correctement authentifie.

Y'a plus qu'a adapter wink.gif ...
Leonick
sauf que $_SERVER['PHP_AUTH_PW'] n'est pas défini chez de nombreux hébergeurs dont OVH
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.