Lister efficacement le contenu d'un FTP

Résolu
Bonjour,

J'ai un FTP avec de multiples dossiers et sous-dossier remplis de fichiers que j'aimerais lister dans un seul et unique fichier.
J'ai mis la main sur ce code mais le problème est qu'il liste TOUT les dossiers alors que je voudrais par exemple restreindre le champ d'action sur certains dossiers qui ne doivent pas être listés.

Merci d'avance pour votre aide.

Le code:

...
<body>
<?php
function ScanDirectory($Directory){

$MyDirectory = opendir($Directory) or die('Erreur');
while($Entry = @readdir($MyDirectory)) {
if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
echo '<ul>'.$Directory;
ScanDirectory($Directory.'/'.$Entry);
echo '</ul>';
}
else {
echo '<li>'.$Entry.'</li>';
}
}
closedir($MyDirectory);
}

ScanDirectory('.');
?>

</body>
</html>

8 réponses

  1. Contributeur
    Salut.
    Déjà pour restreindre, il faut que tu fasse une liste, une règle à respecter.
    Soit tu met en dur dans le code soit tu fais à partir d'un fichier. à toi de voir.
    0
    1. Justement, ca je ne sais pas le faire...
      0
      1. Contributeur
        ça quoi ?
        faire la liste ?
        0
        1. J'ai récupéré ce code php pour faire la liste du contenu de mon ftp, je ne l'ai pas écris. Ainsi j'aimerai savoir comment le modifier pour obtenir ce que j'ai dit avant. Mais je ne sais pas comment écrire le code à cette fin.
          0
          1. Contributeur
            Je ne connais pas le PHP, mais d'après ce qui est écris, il faut modifier le if.
            <body>
            <?php
            function ScanDirectory($Directory){
            
            $MyDirectory = opendir($Directory) or die('Erreur');
            while($Entry = @readdir($MyDirectory)) {
            if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..'&& $Entry != 'rep_a_ignorer1' && $Entry != 'rep_a_ignorer2') {
            echo '<ul>'.$Directory;
            ScanDirectory($Directory.'/'.$Entry);
            echo '</ul>';
            }
            else {
            echo '<li>'.$Entry.'</li>';
            }
            }
            closedir($MyDirectory);
            }
            
            ScanDirectory('.');
            ?>
            

            ça c'est la version en dur, peu souple.
            0
            1. Oui merci, je vais essayer ca. Mais c'est vrai que lorsque la liste est produite c'est trés peu clair.
              Enfin j'éditerais une fois testé, merci.

              Hum...je ne sais pas quelle syntaxe utiliser afin d'écrire le répertoire à ignorer.
              "/files/jeux" ou "/files/jeux/" ou "files/jeux/" ?
              0
              1. Contributeur
                Je ne sais pas trop. Mais comme . et .. sont notés sans /, je pense qu'il ne faut pas en mettre de trop.
                En plus, tu ne balay qu'un répertoire en profondeur à chaque passage, donc je mettrai juste 'jeux' à ta place. Mais si tu veux lister un répertoire jeux qui n'est pas dans files/ il va falloir faire un poil plus compliquer.
                0
                1. Oui ca fonctionne.
                  Je poste le code voulu au cas ou quelqu'un voudrait faire la même chose :)

                  A insérer dans les balises <body> d'un document .php ce code listera le contenu d'un répertoire d'un serveur incluant les sous-dossiers. Ici les dossiers Jeux et Games ne seront pas listés:

                  <?php
                  function ScanDirectory($Directory){

                  $MyDirectory = opendir($Directory) or die('Erreur');
                  while($Entry = @readdir($MyDirectory)) {
                  if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..'&& $Entry != 'Jeux' && $Entry != 'Games') {
                  echo '<ul>'.$Directory;
                  ScanDirectory($Directory.'/'.$Entry);
                  echo '</ul>';
                  }
                  else {
                  echo '<li>'.$Entry.'</li>';
                  }
                  }
                  closedir($MyDirectory);
                  }

                  ScanDirectory('.');
                  ?>
                  0