Bonjour M1ck3y
Bonjour.
Tout d'abord, bravo et merci pour ce script qui fonctionne très bien.
Merci pour ton appréciation
En effet, le script fonctionne assez bien, je l'utilise au quotidien, mais il a un très gros défaut, c'est qu'il se propage automatiquement dans toute l'arborescence du site (il se copie lui-même quoi), et ceci n'est pas un comportement très... comment dire, très clean
Je travail peu à peu sur une nouvelle version qui, normalement, devrait éviter ce comportement, mais je me heurte encore à quelques difficultés que je dois résoudre, et comme je ne dispose pas de beaucoup de temps en ce moment, le projet n'avance que très lentement... je vous tiendrais au courant dès que j'obtiens quelque chose qui fonctionne bien...
Je voudrais l'utiliser sur mon petit site web, mais je me heurte a 2 problèmes.
Il faut dire que je débute totalement...
Alors voila:
j'ai envoyé une redirection vers index.php afin de proposer des fichiers au téléchargement pour les utilisateur. Le problème est que je n'arrive pas à paramètrer correctement le script pour que les utilisateurs puissent lister les repertoires et sous repertoires. Mon second problème est que je ne sais pas comment paramètrer le script pour que certains fichiers soient cachés.
voila le script tel que je l'ai reglé:
Code : Tout sélectionner
$autoris = array(
'user'=>array('types'=>array('Dossier','Documents'),'actions'=>array('edit','copy')),
'guest'=>array('types'=>array('Image','Video','Audio'), 'items'=>array('fonds'))
);
// Liste d'elements qui doivent rester invisibles a tout le monde et en toutes circonstances :
$invisibles = array(''.basename(__FILE__));
Malgré l'ajout du droit "copy" pour le compte user, les sous repertoires n'apparaissent pas
Et comment dois-je remplir la variable invisible? J'aimerais cacher des fichiers.html, et si possible un dossier.
Connecté en tant qu'admin, je peux tout lister, c'est parfait, mais je ne veux pas que les utilisateurs puissent éditer quoi que ce soit, et encore moins effacer des fichiers.
Bon, ok, voyons tout ça en plusieurs étapes...
Prennons comme exemple
le dossier de test, nous avons les éléments suivants (je ne montre ici que les noms, les éléments finissant par un "/" sont donc les dossiers) :
Code : Tout sélectionner
agave.jpg
dandelion.jpg
dirlist.zip
fonds/
galerie.html
galerie.php
leaf_curl.jpg
petals.jpg
sample.mov
scripts.js
styles.css
text2md5.php
text2md5.php.zip
texte.txt
textes/
textes.dmg
textes.zip
Bon, DirList propose de régler les autorisations des différents utilisateurs selon 3 catégories :
1. Types : désignent les types de fichiers que l'utilisateur peut voir
2. Items : désigent les éléments, par leur nom, que l'utilisateur peut voir
3. Actons : désigent les différentes actions que l'utilisateur peut déclancher
Enfin, une valeur générale "Tout" qui autorise tout, c'est l'option pour les administrateurs quoi...
Donc, admétons que nous souhaitons créer un nouvel utilisateur pour lui attribuer des autorisations particulières, supposons que nous voulons le nommer "Pierre", supposons aussi que son mot de passe est "pierro".
Nous devons donc commencer par créer (ajouter) cet utilisateur à la variable liste "$nomdp" (bien respecter les majuscules/minuscules du nom et du mot de passe avant de générer la somme Md5) :
$nomdp = array(
'admin'=>'21232f297a57a5a743894a0e4a801fc3',
'user'=>'ee11cbb19052e40b07aac0ca060c23ee',
'guest'=>'084e0343a0486ff05530df6c705c8bb4',
'Pierre'=>'4750a762336de45114801865c088b9a6'
);
Pour générer la somme Md5 du mot de passe, conversion nécessaire pour valider le mot de passe fourni par l'utilisateur, j'utilise un petit script Php, que tu peux télécharger par ici : "
text2md5.php.zip", ou l'utiliser directement par ici "
text2md5".
Maintenant, supposons que nous souhaitons lui donner quelques autorisations particulières, comme la possibilité de voir uniquement les fichiers de type "texte" et uniquement ceux-là, nous ne voulons pas qu'il puisse à accéder aux sous-dossiers, sauf celui nommé "textes", et nous ne voulons lui donner aucune autorisation de manipulation de ces fichiers...
Donc, nous devons ajouter ces paramètres à la variable liste nommée "$autoris", de la manière suivante :
$autoris = array(
'user'=>array('types'=>array('Documents'), 'items'=>array('textes'), 'actions'=>array('edit')),
'guest'=>array('types'=>array('Image','Video','Audio'), 'items'=>array('fonds')),
'Pierre'=>array('types'=>array('Texte'), 'items'=>array('textes'))
);
Donc, "Pierre" ne peut voir que les fichies de type "Texte" et ne peut accéder qu'au dossier nommé "textes", il n'a aucune autre autorisation, il ne pourra donc pas éditer ou supprimer les documents, du coup la liste d'éléments qu'il verra sera comme ceci :
Code : Tout sélectionner
galerie.html
galerie.php
scripts.js
styles.css
text2md5.php
texte.txt
textes/
Si tu veux être sûr que "Pierre" navigue toujours avec "DirList", il serait peut-être prudent de signaler au script de se propager, si nécessaire, dans les dossier que "Pierre" consultera, pour ce faire, il suffit d'ajouter ce réglage, comme suit :
'Pierre'=>array('types'=>array('Texte'), 'items'=>array('textes'), 'actions'=>array('copy'))
Si nous souhaitons maintenant permettre à "Pierre" de voir en plus les archives de type "zip" et autres formats de comression, il suffit d'ajouter le type à la liste concernée :
'Pierre'=>array('types'=>array('Texte', 'Archive'), 'items'=>array('textes'), 'actions'=>array('copy'))
Dès lors, "Pierre" vera la liste suivante :
Code : Tout sélectionner
dirlist.zip
galerie.html
galerie.php
scripts.js
styles.css
text2md5.php
text2md5.php.zip
texte.txt
textes/
textes.zip
Voilà, normalement avec ça tu devrais comprendre le principe de configuration des utilisateurs, si jamais certaines de ces explications te paraissent confuses, n'hésites pas à m'en faire part, je tâcherai d'exposer tout ça d'une autre manière...
Concernant les éléments à cacher, on peut en effet les lister, par leur nom, dans la variable liste "$invisibles".
Par exemple, si nous ne voulons pas que "Pierre" puisse accèder aux fichiers de type texte nommés "scripts.js" et "styles.css", dont il a normalement l'autorisation, il suffit d'ajouter ce deux éléments à la variable "$invisibles", comme suit :
$invisibles = array(''.basename(__FILE__), 'scripts.js', 'styles.css');
Il suffit donc de séparer chaque élément à masquer par une virgule à l'intérieru des paranthèses du "array", du coup "Pierre" vera la liste suivante :
Code : Tout sélectionner
dirlist.zip
galerie.html
galerie.php
text2md5.php
text2md5.php.zip
texte.txt
textes/
textes.zip
Mais
ATTENTION, ce réglage est global, c'est à dire que tous les utilisateur sont concernés. Autrement dit,
ces fichiers seront masqués à tous les utilisateurs, administrateurs y compris... moralité, personne ne pourra les voir en naviguant avec DirList.
Dans la prochaine version du script ceci pourra se configurer de manière un peu plus précise, en attendant, si tu ne souhaites pas que ces documents soient aussi masqués aux adminsitratuers, tu peux les mettre dans un dossier appart tous ces éléments que tu souhaites cacher aux autres utilisateurs (bien-sûr, seulement si celà est possible)...
Voilô, j'espère n'avoir pas oublié des choses à dire, en tout cas n'éhsites pas à me soliciter ici si tu as d'autres questions à propos de l'utilisation de DirList...
Merci, à bientôt...
[edit]
Oui, j'ai oublié de dire quelque chose d'important.
Comme expliqué plus haut, le script se propage en s'auto copiant dans les sous-repertoires, mais ceci uniquement si la version du script principal est plus récente que celle des scripts se trouvant dans les sous-dossiers, autrement dit, le script vérifie si le script présent dans les sous-dossiers est une version plus ancienne que celle qui l'appelle, si c'est le cas, alors le script du sous-dossier est remplacé par la nouvelle version, dans le cas contraire le script ne fait rien.
Donc, dans le script principal, fait toutes les modifications et personnalisations que tu souhaites, puis, avant de le mettre en ligne, modifie la valeur de la variable "$dirlist" qui si trout tout en haut du fichier (ne change surtout pas son emplacement, sous peine de dysfonctionnements).
Change donc la valeur en modifiant les 4 premiers chiffres par une valeur suppérieure, c'est à dire que si ces 4 premiers chiffres indiquent "0112", change-le par "0113", du coup le script saura qu'il doit mettre à jour les scrpts plus anciens que lui.
Enfin, pour que tu vois que ça fonctionne, j'ai configuré le dossier de démo avec notre nouvel utilisateur "Pierre", mot de passe "pierro", tu verras que les réglages dont nous avons parlé sont bien pris en compte...
Tiens-moi au courant Stp
[/edit]