LISTER LES FICHIERS D'UN DOSSIER, ET EN FAIRE DES LIENS

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 18 mai 2005 à 10:09
dream303 Messages postés 35 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 30 décembre 2006 - 2 sept. 2005 à 13:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31442-lister-les-fichiers-d-un-dossier-et-en-faire-des-liens

dream303 Messages postés 35 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 30 décembre 2006
2 sept. 2005 à 13:52
lol
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
2 sept. 2005 à 13:51
mdr
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
2 sept. 2005 à 13:40
Effectivement, la même source mais en bien mieux :
http://www.phpcs.com/code.aspx?ID=33593
dream303 Messages postés 35 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 30 décembre 2006
2 sept. 2005 à 10:23
Bon, c'est pas grave, quelqu'un d'autre m'a aidé sur cette page
http://www.phpcs.com/code.aspx?ID=33593
dream303 Messages postés 35 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 30 décembre 2006
1 sept. 2005 à 12:39
MTRZEN, j'utilise ton script depuis ce matin mais j'aimerais trier les fichiers de la liste par nom. Est-ce que c'est possible ? (Perso je vois pas comment faire ...)
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
1 sept. 2005 à 12:27
il suffit de tripatouiller l url pour la trouver

sinon, ce qui est a faire c mettre le repertoire a explorer ailleurs que le dans le meme dossier que le fichier d exploration
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 12:03
Il serait donc bien de les signaler (j'ai la flemme de matter désolé)
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
1 sept. 2005 à 12:01
en faite, j ai mis au point une toute nouvelle version de ce script, bien plus complexe, bien plus aboutit, enfin bref, bientot un post aboutira ladessus

dailleurs faites attention ce script comporte une grosse faille... et plusieurs petites
dream303 Messages postés 35 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 30 décembre 2006
1 sept. 2005 à 11:48
Merci a toi MTRZEN, ta source fonctionne très bien et m'a rendue service !
A+ et bonne continuation !
www.dream303.tk
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 mai 2005 à 21:03
je sais j'aurais dû mettre entre guillemets le "égal" ;-)
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
22 mai 2005 à 19:27
Fâché avec l'orthographe aussi ^^

Non j'rigole c'est juste qu'on dit les doubles égaux au pluriel :D
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 mai 2005 à 18:27
mes trois signes :

if($Repertoire==='..')
{

}

etc...

je suis fâché avec les doubles égal ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 mai 2005 à 18:02
Hello,

tu insistes avec les trucs lourds lol ;-)
<?php
If ($Repertoire == '..')
{
$Repertoire = '.';
}
If ($Repertoire == '')
{
$Repertoire = '.';
}
?>
Pourquoi ne pas mettre if ($Repertoire '.' || $Repertoire '..') {} ?
Ensuite heu...pourquoi faire ca, tout simplement, lol ?
Ensuite, pourquoi tu crees autant de variables Exceptions ? Pourquoi pas un tableau direct...au lieu de le creer a la volee ensuite dans ton in_array() ?
$path_parts['extension']=='' => empty($path_parts['extension']) devrait fonctionner. Pas sur que ce soit plus rapide, mais c'est plus joli :-)
Bon...j'ai la flemme de continuer et pas trop le temps : mais tu devrais faire une fonction de ce truc, quand meme, ce serait plus utile.
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
20 mai 2005 à 15:17
Voici la nouvelle version du script...
Bon, je n'ai pas integré les .htacces et autres, et laisser la possibilité de voir les fichier *.php.*

apr contre Pathinfo() me permet de naviguer sur le nom du dossier








<html><head>
<!-- CSS Stylesheet -->
<style type="text/css">
<!--
a:VISITED {
color : #000099;
text-decoration : none;
}
a:HOVER {
color: #6666FF;
}
a:LINK {
color : #0000AA;
text-decoration : none;
}
.bas
{
background-color: #F9F9F9;
color: #666666;
font: 6pt geneva, lucida, veranda,'lucida grande', arial, helvetica, sans-serif;
text-align: center;
width: 320px;
MARGIN-TOP: 20px;
}
.dossier
{
background-color: #BBBBBB;
color: #000000;
font: 10pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
MARGIN-TOP: 5px;
MARGIN-BOTTOM: 5px;
MARGIN-LEFT: 5px;
MARGIN-RIGHT: 5px;
text-align: left;
border-left: thin solid Green;
border-right: thin solid Green;
border-top: thin solid Green;
border-bottom: thin solid Green;
scrollbar-base-color: #f2f2f2;
scrollbar-track-color: #f9fafa;
scrollbar-face-color: #F1F1F1;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-shadow-color: #C8C8CA;
scrollbar-arrow-color: #999999;
width: 320px;

}
.boite
{
background-color: #DDDDDD;
color: #333333;
font: 9pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
MARGIN-TOP: 0px;
MARGIN-BOTTOM: 0px;
MARGIN-LEFT: 10px;
MARGIN-RIGHT: 10px;
border-top: thin dotted Blue;
border-bottom: thin solid Blue;
scrollbar-base-color: #f2f2f2;
scrollbar-track-color: #f9fafa;
scrollbar-face-color: #F1F1F1;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-shadow-color: #C8C8CA;
scrollbar-arrow-color: #999999;
width: 300px;
}
</style>
</head>

<?php
If ($Repertoire == '..')
{
$Repertoire = '.';
}
If ($Repertoire == '')
{
$Repertoire = '.';
}
?>



<?php
echo '';
echo '[?Repertoire=. SITE OUEB]';
$Chemin = explode("/", $Repertoire);
$xxxx = 1;
while($Chemin[$xxxx])
{
echo '[?Repertoire=.';
$xxx = 1;
while($xxx !== $xxxx + 1)
{
echo '/'.$Chemin[$xxx];
$xxx = $xxx + 1;
}
echo ' /'.$Chemin[$xxxx];
$xxxx = $xxxx +1;
echo ']';
}
echo '';
?>









<?php


$Exeption1 = ".";
$Exeption2 = "..";
$Exeption3 = 'php';


$dir = opendir($Repertoire);
while(False !($file readdir($dir)))
{
if(!in_array($file, array($Exeption1,$Exeption2)))
{
$path_parts = pathinfo($file);
if ($path_parts['extension']=='')
{
echo $path_parts['dirname'].'.........';
echo '[?Dir='.$Dir.'&Repertoire='.$Repertoire.'/'.$path_parts['basename'].' ';
echo $path_parts['basename'].']
';
}Else
{
//sort le nom du fichier
$page = explode("/", $file);
$page = explode(".", ($page[count($page)-1]));
$nom_fichier = $page[0];

if ($path_parts['extension']!==$Exeption3)
{
echo $path_parts['dirname'].'['.$Repertoire.'/'.$file.' ';
echo $nom_fichier; echo ']';
echo ' - '.$path_parts['extension'].' - ';
echo '
';
}
}
}
}
?>







<?php
echo '-Easy Explo Web- ';
echo 'version 0.8 du 20/05/2005';
echo '
derniere maj : **censured**';
echo '
soft : LucCaCorpo'
?>






</html>
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 mai 2005 à 18:05
C'est pas vraiment une faille vu le but du script, plutôt un bug dirons-nous ;-)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2005 à 16:19
MTRZEN => l'erreur 500 c'etait sur le forum, pas sur ton code ;-)
Quant aux failles, je te l'ai dit un peu plus haut.
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
19 mai 2005 à 12:54
>> Twisteurwin : No problem, le but de ce site est d'apprendre, non.
>> Malalam : moi, aussi mais le message est passé ;)
cs_twisteurwin Messages postés 167 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 2 mai 2009
19 mai 2005 à 12:40
Ok avec vous !
Un fichier a toujours une association l'extension n'est pas obligatoire...soit...
Un repertoire ne s'associe pas à un programme...
vala jpeux me tromper...mais jcrois en moi lol
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2005 à 12:33
C'est de la triche, j'ai eu une erreur 500!! ;-)
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
19 mai 2005 à 12:30
Malalam : Presque synchro ;)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2005 à 12:29
=> twisteurwin : pas forcement...et en tous cas, ce ne sera certainement pas verifiable de cette maniere. je peux creer un repertoire s'appelant "mon.repertoire" si je veux. Et un fichier "monfichier". Et je ne parle pas de Linux...
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
19 mai 2005 à 12:29
>> Twisteurwin

Utilisateur windows,va ;)

par exemple: les fichiers .htaccess et .htpasswd ont des extensions , non !
ici, le point permet de dire au systeme en particulier *nix que c'est un fichier caché, si mes souvenirs sont bons

Rien ne t'empeche de ne pas donner d'extension sous Windows en plus, le pb c'est que windows associe les programmes en fonctions de l'extension et non du type de fichier (cf MIME)

Sur ce bon app
cs_twisteurwin Messages postés 167 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 2 mai 2009
19 mai 2005 à 12:14
"Commentaire de : garfield90 > pour déterminer si c'est un fichier utilise ( is_file) et pour un repertoire (is_dir)
un fichier peut ne pas avoir d'extension"

Au contraire un fichier porte une extension mais pas un repertoire...:-)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 mai 2005 à 11:30
D'ailleurts a ce propos, il y a d'autres failles dans ton script.
Tu fais un explode sur le ".". Ok, mais moi je nomme mes fichiers classes ainsi :
myclass.cls.php
Tu ne vas recuperer que cls avec ton systeme, demandant directement le $page[1].
Tu ne testes pas non plus si tu as bien un tableau en sortie de tes explode, donc en cas de fichier sans extension...
Et je ne comprends toujours pas ta sombre histoire de "trous" lol...
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
19 mai 2005 à 10:55
Salut,

pour déterminer si c'est un fichier utilise ( is_file) et pour un repertoire (is_dir)
un fichier peut ne pas avoir d'extension
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
19 mai 2005 à 10:10
C est pour l evolution du Script :) ce trou va laisser la place a des actions différentes en cas de dossier ;)

Bon je me penche sur l utilisation des tableaux et je modifi tout cela
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
19 mai 2005 à 07:09
pourquoi tu met ca :
if($ext_fichier=='') {
}Else{
echo '['.$file.' ';
echo $nom_fichier; echo ']';
echo ' - '.$ext_fichier;
echo '
';
}

Il y a plus simple :
if($ext_fichier!='') {
echo '['.$file.' ';
echo $nom_fichier; echo ']';
echo ' - '.$ext_fichier;
echo '
';
}

Et ca amène a la meme chose.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 mai 2005 à 18:26
Salut,

if ($Repertoire == 'EspacePerso')

tu pourrais plutôt mettre dans un array tes noms de dossiers à ne pas lister et à faire un if(in_array($machin...

a +
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mai 2005 à 16:07
Bah si tu faisais une fonction avec des parametres...ce serait encore plus simple.
$affphp = true | false
$affnull = true | false

voire meme mettre juste les extensions non desirees dans un tableau et passer ce tableau en parametre a ta fonction, et la condition qui va avec (if (!in_array($ext_fichiers, $tableau_extensions)) alors on affiche
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
18 mai 2005 à 15:15
En faite, l'avantage de ma formule est de pouvoir avoir un fichier autonome, qui de plus es laisse l'option d afficher les dossiers ou non, et celle de revenir en arriere ou non.

<?php

echo '[.. retour]
';//mettre 2 antislashs pour empcher le retour

$dir = opendir('.');
while($file = readdir($dir))
{ //on lit tout et on récupere tout les fichiers dans $file
if(!in_array($file, array(".","..")))
{ //on eleve le parent et le courant '. et ..'
//sort l extension du fichier
$page = explode("/", $file);
$page = explode(".", ($page[count($page)-1]));
$nom_fichier = $page[0];
$ext_fichier = $page[1];
if($nom_fichier=='index')
{
}Else{

//pour activer le masque des dossiers, supprimer les 4 antislashs suivants
// if($ext_fichier=='')
// {
// }Else{
echo '['.$file.' ';
echo $nom_fichier; echo ']';
echo ' - '.$ext_fichier;
echo '
';
// }
}
}
}
?>

voici un code enregistrable dans un dossier INDEX.PHP... pratique, je viens de le moduler pour un ami qui stock des tas de photos sur son ftp; sans rien connaitre a la prog..
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mai 2005 à 14:05
Oops, c'est ma faute, j'en ai mis 3 de =, mais uniquement dans le 1er. J'avais vu mais je n'ai pas releve pensant que tu corrigerais tout seul en voyant mon explication, et la seconde comparaison...
Pour le listage :
tu fais ton if qu dit : si l'extension est differente d'une chaine vide ou de la chaine 'php'...
et la tu ouvres une jolie accolade, tu mets ton code, puis tu la fermes (l'accolade... ;-) )
Ton code actuel a trop de {} et de if ()...ne le corrige pas, reprends le, ce sera plus simple et evitera les erreurs de conception lol.

if ($ext_fichier !== '' && $ext_fichier !== 'php'){
echo '['.$Repertoire.'/'.$file.' ----';
echo $nom_fichier;
echo ']';
echo ' - '.$ext_fichier;
echo '
';
}
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
18 mai 2005 à 13:56
Ca existe pas les !=== ;)
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
18 mai 2005 à 13:47
avec ta solution
if ($ext_fichier !=== '' && $ext_fichier !== 'php')

Parse error: parse error, unexpected '=' in /var/www/free.fr/e/7/grg666/**/**/**/fichier.php on line 18

et si je met
if ($ext_fichier !== '' && $ext_fichier !== 'php')
ca liste les dossiers... :'(
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
18 mai 2005 à 13:15
les BBS vivent encore (cf. parano.be)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mai 2005 à 12:21
Bah, ce serait moins drole s'il n'y avait aucune subtilites ;-)
T'as connu les bbs toi...?
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
18 mai 2005 à 11:54
okay merci
ce sataner "0" qu'il ne faut pas négliger. Je me souviens sur un BBS, le simple fait de demander l affichage du post "0" permetait d afficher l integralité des posts.. de quoi faire fumer le pauvre serveur perso derriere
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mai 2005 à 10:56
Le false : parce que la doc php le dit comme ca ;-)
Non, c'est simple : les operateurs de comparaisons sont ou (ou != et !== par exemple). Dans le premier cas, il ne faut pas oublier que php n'est pas un language tres type...or, on ne compare pas sur le type. Dans le second cas, on compare aussi sur le type (les deux valeurs doivent etre de meme type).
Ce qui veut dire que, avec ton code, si ton script tombe sur un fichier qui s'appelle 0, il va s'arreter. Parce que tu lui dis "si mon read dir renvoie 0, tu t'arretes). Avec ma proposition, il ne s'arretera pas parce qu'il faudra que ce fichier soit de type booleen, et que sa valeur soit exactement equivalente a false.

Le
, non, c'est juste la norme w3c pour le xhtml, et me semble t il aussi pour le html 4.01 : tous les elements doivent etre fermes. Donc soit on a un element imbriquant une valeur ( valeur ) et la c#est facile. Soit on a un element qui n'imprique pas de valeur (
) auquel cas il faut l'ecrire de cette maniere.
mtrzen Messages postés 18 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 13 mars 2007
18 mai 2005 à 10:45
Désolé, je débute en php.
Pourquoi while(false !==($file = readdir($dir)))
enfin pourquoi false !==

qu'est-ce que le !=== dans le If

et sinon quel interet du
? ca permet d'éviter des failles ou de mauvaises interpretation du serveur?
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 mai 2005 à 10:09
Hello,

while($file = readdir($dir))
doit etre
while(false !==($file = readdir($dir)))

et je n'ai pas bien pige tes if () {} :
# if($ext_fichier=='php')
# {
# }Else{
# if($ext_fichier=='')
# {
# }Else{

Ca sert a quoi...?
Enfin je comprends a quoi ca sert, mais pourquoi n'as tu pas fait l'inverse ?
if ($ext_fichier !=== '' && $ext_fichier !== 'php') {
ton code
}
Idem pour ton premier if ().

devrait etre
, mais bon.

Sinon rien a dire, ca doit fonctionner.
Rejoignez-nous