Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Réglé] Afficher le contenu du dossier en PHP

Sujet résolu
    10 décembre 2008 à 17:19:39

    Bonjour

    Je ne suis pas un expert en PHP, j'ai appris les bases avec le site du zéro mais sans plus.
    Aujourd'hui je viens vous voir pour demander de l'aider pour adapter un code,
    Le code actuel permet de retranscrire le contenu d'un dossier

    Quelqu’un pourrait m'aider à l'adapter pour qu'il soit un peu plus élaboré ?
    C’est à dire
    Afficher le contenu du dossier sous forme d'un tableau avec plusieurs colonnes :
    Nom, Type de fichier, Taille, Date de création, et d'autre chose éventuellement (à proposer si idée)

    Le code actuelle que j'ai est :
    <?php
    function listing($repertoire){
    	$fichier = array();
    	if (is_dir($repertoire)){
    		$dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
    		while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file
    			if(is_dir($file)) continue; //Ce qui aura pour effet de passer la boucle si le fichier actuel est un dossier. 
    			if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
    				$page = $file; //sort l'extension du fichier
    				$page = explode('.', $page);
    				$nb = count($page);
    				$nom_fichier = $page[0];
    				for ($i = 1; $i < $nb-1; $i++){
    					$nom_fichier .= '.'.$page[$i];
    				}
    				if(isset($page[1])){
    					$ext_fichier = $page[$nb-1];
    					if(!is_file($file)) { $file = '/'.$file; }
    				}
    				else {
    					if(!is_file($file)) { $file = '/'.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
    					$ext_fichier = '';
    				}
    				if($ext_fichier != 'php' and $ext_fichier != 'exe') { //utile pour exclure certains types de fichiers à ne pas lister
    					array_push($fichier, $file);
    				}
    			}
    		}
    	}
    	natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
    	foreach($fichier as $value) {
    			echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a><br />';
    	}
    }
    //exemple d'utilisation :
    listing('.'); //chemin du dossier
    ?>
    


    MERCI
    • Partager sur Facebook
    • Partager sur Twitter
      12 décembre 2008 à 13:07:24

      Merci bien, c'est exactement ce qui me fallait

      merci
      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2008 à 21:31:28

        Bonjour,
        je reouvre ce post pour demander un petit coup de main.
        déjà encore merci pour ce lien vraiment fantastique.

        par contre quelqu'un pourait m'aider à adapter ce code ?
        ce que je reproche à ce code est qu'il récupère l'ensemble des fichiers ==> même les fichiers PHP3.
        j'aimerai faire en sorte qu'il n'affiche pas les extenssion PHP3. pensez vous que c'est possible ?

        Pour information dans le premier code que j'ai mis:
        la personne exlus les fichier PHP avec ça :
        if($ext_fichier != 'php' and $ext_fichier != 'exe') { //utile pour exclure certains types de fichiers à ne pas lister
        					array_push($fichier, $file);
        
        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2008 à 9:05:07

          Si c'est toi qui a fait ce code, je vois pas où est ton problème pour modifier ta condition :/
          • Partager sur Facebook
          • Partager sur Twitter
            23 décembre 2008 à 14:31:47

            non ce n'est pas moi qui ai écris le code. j'ai trouvé ça sur le net il y a quelque mois.
            c'est pas ce code que j'aimerai adapter mais :
            http://cyberzoide.developpez.com/php4/file/

            j'ai donné comme exemple le bout de code qui permettait d'exclure des extensions,
            en gros je souhaiterai intégrer ce code pour pouvoir exclure les extensions php3
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              28 décembre 2008 à 10:21:02

              if($ext_fichier != 'php' and $ext_fichier != 'exe' and $ext_fichier != 'php3') { //utile pour exclure certains types de fichiers à ne pas lister
              array_push($fichier, $file);
              • Partager sur Facebook
              • Partager sur Twitter
                28 décembre 2008 à 13:44:50

                Merci Foxi 31, mais puis-je savoir ou dois-je mettre cette ligne de code ?
                j'ai essayé sur plusieur endroit, et à chaque fois j'ai ce message d'erreur :

                Parse error: syntax error, unexpected $end in /homepages/6/d213459107/htdocs/Ziou2/index.php3 on line 223
                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2008 à 10:22:50

                  Dernier UP
                  ensuite j'arrête, ce n'est pas mon genre d'aller jusqu'a vous suplier pour demander de l'aide.
                  Cordialement et bonne fin d'année
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 décembre 2008 à 10:30:20

                    Bonjour,

                    Il suffit d'ajouter "and $ext_fichier != 'php3'" dans le "if".

                    Tu as mis le code ou il exclu les fichiers "PHP et EXE"

                    if($ext_fichier != 'php' and $ext_fichier != 'exe') { //utile pour exclure certains types de fichiers à ne pas lister
                    					array_push($fichier, $file);
                    


                    La tu ajoute "and $ext_fichier != 'php3'" ce qui donne :

                    if($ext_fichier != 'php' and $ext_fichier != 'exe' and $ext_fichier != 'php3') { //utile pour exclure certains types de fichiers à ne pas lister
                    					array_push($fichier, $file);
                    


                    Cordialement
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 décembre 2008 à 13:51:42

                      salut Lytaspen
                      Ce n'est pas dans ce code que j'aimerai adapter
                      mais dans le code du lien :
                      http://cyberzoide.developpez.com/php4/file/

                      ou dois-je mettre :
                      if($ext_fichier != 'php' and $ext_fichier != 'exe' and $ext_fichier != 'php3') { //utile pour exclure certains types de fichiers à ne pas lister
                      					array_push($fichier, $file);
                      

                      ou est-ce un autre code ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 janvier 2009 à 16:27:37

                        T'a demandé qu'on t'adapte une condition, il l'a fait, maintenant tu place le code qu'il t'a fait à la place de celui que lui avait donné :-°
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 janvier 2009 à 16:44:39

                          non vous avez pas compris mon problème, ce n'est pas cette condition que j'aimerai adapté, j'ai juste donné cette condition comme exemple pour vous aider.
                          voici ce que ça donne dans le cas génale :
                          http://yusukens.free.fr/Siteduzero/
                          vous voyer bien les 3 fichiers PHP3 ??
                          et bien c'est ce que j'aimerai ne pas montrer, et donc exclure les extentions PHP3 lors du visionnage des fichiers.

                          encore une fois, ces trois fichiers ne contiennent pas le code que vous avez tous adapté, il est DONC IMPOSSIBLE DE LE REMPLACER,
                          pour visionner le code vous pouvez faire un enregistrer sous.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 janvier 2009 à 18:00:03

                            Mais tu dois mettre ca dans ton script qui s'occupe de l'affichage, pas dans chaque fichier à lister o_O
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 janvier 2009 à 18:40:57

                              salut nicodd,

                              le fichier qui s'occupe de l'affichage est bien index.php3 non ?
                              et bien j'ai fais un copie coller de votre commande dans ce fichier, et il continu à afficher les fichiers extentions php3
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                1 janvier 2009 à 19:02:25

                                Dis moi, tu sais ce que le code que tu as copié est censé faire au moins ? L'as tu lu si ce n'est qu'une seule fois et commenté afin de comprendre son fonctionnement ? J'ai l'impression que tu as pris un code tout fait et que tu es maintenant incapable de le modifier pour qu'il s'adapte à ton cas d'utilisation.

                                Si je comprends bien, tu as des fichiers possédant une extension .php3 et tu aimerais qu'ils ne soient pas listés dans ton application. Pour ce faire, tu vas voir le code que tu as bêtement copié, tu vois qu'il y a une fonction nommée "list_file" avec une jolie commentaire très explicite "liste des fichiers". En d'autres termes il te suffit de parcourir le code de cette fonction pour trouver ce qu'il y a à modifier afin d'exclure les extensions en .php3. Voici la partie du code qui me semble être celle effectuant l'extraction des fichiers :

                                <?php
                                    /* extraction */
                                    while($file = readdir($dir))
                                    {
                                      if(is_dir($cur."/".$file))
                                      {
                                        if(!in_array($file, array(".","..")))
                                        {
                                          $tab_dir[] = addScheme($file, $cur, 'dir');
                                        }
                                      } 
                                
                                      else
                                      {
                                          $tab_file[] = addScheme($file, $cur, 'file');
                                      }
                                    } 
                                ?>
                                


                                On ne s'improvise pas codeur ... Au lieu de copier n'importe où la condition comme un demeuré, cherche donc exactement à quel endroit cette condition aura un effet, et surtout regarde si les variables qu'elle utilise existent réellement et possèdent les valeurs désirées à ce moment là. À première vue, ta condition n'a absolument rien à voir avec le code que tu exploites actuellement.

                                Enfin en tout cas j'espère que personne ne te donneras la réponse au problème si tu ne cherches pas par toi même ... c'est totalement déplorable.

                                Je suis sur que tu ne comprends pas un dixième des fonctions et structures utilisées dans ce code, tu ferais mieux d'apprendre avant de vouloir utiliser (et pour apprendre il faut commencer par chercher).
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 janvier 2009 à 21:10:24

                                  Citation : Pas de titre

                                  Dis moi, tu sais ce que le code que tu as copié est censé faire au moins ?


                                  Oui je sais ce qui est censé faire

                                  Citation : Pas de titre

                                  L'as tu lu si ce n'est qu'une seule fois et commenté afin de comprendre son fonctionnement ? J'ai l'impression que tu as pris un code tout fait et que tu es maintenant incapable de le modifier pour qu'il s'adapte à ton cas d'utilisation.


                                  Oui je l’ai lu mais je n’avais pas tout compris, normal, si t’as pris le temps de lire mes message, tu comprendrais que je ne suis pas un informaticien, ni même un développeur
                                  Il est donc normal d'être incapable de modifier ce script (avec le peu de connaissance que j’ai en php), si j’étais si fort, tu penses bien que je ne serai pas venu demander de l’aide


                                  Citation : Pas de titre

                                  On ne s'improvise pas codeur ... Au lieu de copier n'importe où la condition comme un demeuré, cherche donc exactement à quel endroit cette condition aura un effet, et surtout regarde si les variables qu'elle utilise existent réellement et possèdent les valeurs désirées à ce moment là


                                  Sache que j’ai passé plusieurs heures à chercher une solution et essayer de comprendre chaque ligne, pour preuve, j’ai déjà modifié plusieurs chose du script afin de l’adapter à mes besoins, mais sache également que mes compétence en php sont limités, il est donc normal de venir demander de l’aide, Non ?


                                  Citation : Pas de titre

                                  Je suis sur que tu ne comprends pas un dixième des fonctions et structures utilisées dans ce code,


                                  Encore une fois je ne suis pas un pro, et si j’arrivé à déchiffrer la moitié du script, je ne serai pas la aujourd’hui.


                                  Citation : Pas de titre

                                  tu ferais mieux d'apprendre avant de vouloir utiliser (et pour apprendre il faut commencer par chercher)


                                  Pas du tout d’accord, cela dépend de ce que tu recherche réellement.
                                  Exemple 1) tu cherche un renseignement bien précis dans les codes des marchés public (un domaine que tu ne connais pas du tout), tu cherche pendant 6 heures sans résultats,
                                  Solution 1 : intelligeant, tu continu à chercher et après 4 mois tu trouves la réponse (génial)
                                  Solution 2 : tu vas demander de l’aide dans à forum ? en ayant dans l’esprits que t’as fais ton maximum ?

                                  Exemple 2) vaux mieux apprendre avant de vouloir utiliser ; quand tu achètes un logiciel, tu commence par déchiffrer chaque DLL ou t’installe et utilise sans te poser de question ?
                                  dans mon cas je suis à moitier utilisateur et moitier ...(pas utiliser betement sans comprendre)

                                  Pour mon problème, je cherche un script pour répondre à un besoin, qui est de lire un répertoire d’un serveur ftp
                                  Je ne cherche pas à apprendre l’html, java, php, C++ etc. rien que pour satisfaire ce besoin, encore si c’est du nécessité absolue.


                                  Alors si tu ne veux ne pas me donner la réponse à mon problème, tant pis, sache que ce n’est pas une nécessité absolue, dans tous les cas je n’irai pas apprendre tous les langages informatiques pour ce script
                                  Dans ton cas, vu ton comportement je suppose que ce n’est pas la première fois que tu dis ça dans un forum de discussion, sache que si tous monde était aussi intelligeant que toi, on ne viendra pas demander de l’aide.
                                  Encore si la personne n’a fais aucune recherche et vient dans un forum pour réclamer la lune, je trouve ta réponse normal, mais quand une personne n’y connaît rien dans ce domaine mais essaye quand même je trouve ton message déplacé.

                                  Sur ce je te souhaite une bonne année, et j’espère que grâce à toi, plusieurs gens comme moi ne viendront plus sur le forum du Zéro. Si c’est pour recevoir ce genre de remarque lorsqu’on vient demander de l’aide, non merci

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    1 janvier 2009 à 23:22:57

                                    Beau discours ! :lol:

                                    Vu que tes propos furent magnifiques, je vais voir pour t'aider,je ne garantie pas le résultat sachant que je ne vais pas le tester et que je ne fais pas que ça, mais ça devrait au moins t'orienter comme il faut pour que tu corriges les quelques problèmes restant par la suite.

                                    Donc, reprenons, nous avons une fonction qui permet d'extraire les fichiers et dossiers afin de les lister par la suite, dans cette fonction, une partie est spécifiquement codée pour effectuer cette tache d'extraction de données pour les stocker dans deux tableaux ("tab_dir" et "tab_file"). Voici le code de cette partie :

                                    <?php
                                        /* Nous allons parcourir le dossier demandé */
                                        while($file = readdir($dir))
                                        {
                                          /* S'il s'avère que l'objet actuel est un dossier */
                                          if(is_dir($cur."/".$file))
                                          {
                                            /* On s'assure qu'il ne s'agisse ni du dossier courant (ou chemin) ni du dossier parent */
                                            if(!in_array($file, array(".","..")))
                                            {
                                              $tab_dir[] = addScheme($file, $cur, 'dir');
                                            }
                                          } 
                                    
                                          /* Sinon c'est un fichier */
                                          else
                                          {
                                              $tab_file[] = addScheme($file, $cur, 'file');
                                          }
                                        } 
                                    ?>
                                    


                                    Nous voyons déjà ici que la réponse à notre problème est proche. Effectivement, nous avons une condition qui demande à remplir un tableau avec les données de fichiers, ainsi, pour empêcher certains fichiers d'y être, il nous faudra modifier cette condition (ici le "else").

                                    De plus, nous voyons que les données concernant les fichiers stockées dans le tableau sont envoyées par une autre fonction ("addScheme"), aussi voici le code de cette fonction :

                                    <?php
                                    /* Fonction permettant de renvoyer les informations sur un fichier */
                                    function addScheme($entry,$base,$type)
                                    {
                                      $tab['name'] = $entry; // Nom du fichier
                                      $tab['type'] = filetype($base."/".$entry); // Type du fichier (toujours file pour notre exemple)
                                      $tab['date'] = filemtime($base."/".$entry); // Date de dernière modification du fichier
                                      $tab['size'] = filesize($base."/".$entry); // Taille du fichier
                                      $tab['perms'] = fileperms($base."/".$entry); // Droits du fichier
                                      $tab['access'] = fileatime($base."/".$entry); // Date du dernier accès au fichier
                                    
                                      /* Ici on stocke dans des cases séparées d'un tableau (nommé "t") les parties du nom du fichier séparées par un "." */
                                      $t = explode(".", $entry);
                                    
                                      /* Pour obtenir l'extension il nous faut le contenu de la dernière case de ce tableau */
                                      $tab['ext'] = $t[count($t)-1];
                                    
                                      return $tab; // On renvoie les informations
                                    }
                                    ?>
                                    


                                    Cette fonction nous intéresse particulièrement car elle permet de voir la marche à suivre pour obtenir l'extension du fichier. Néanmoins, nous ne ferons pas appelle à elle pour obtenir cette extension car cela demanderai d'utiliser inutilement de la mémoire en ayant un tableau rempli d'informations inutiles. Dans notre cas nous allons juste utiliser la variable nommée "t" et tester l'extension du fichier :

                                    <?php
                                    /* Se rappeler que dans notre boucle d'extraction, le nom du fichier est stocké localement dans la variable $file et non dans la variable $entry */
                                    $t = explode('.', $file);
                                    
                                    if($t[count($t) - 1] == "php3")
                                    {
                                       // Ici on ne fera rien vu que le but est de ne pas stocker le fichier
                                    }
                                    ?>
                                    


                                    Maintenant que nous avons notre condition, il nous suffit de la rajouter à notre traitement d'extraction afin de ne plus voir apparaître les fichiers ayant pour extension "php3" :

                                    <?php
                                        /* Nous allons parcourir le dossier demandé */
                                        while($file = readdir($dir))
                                        {
                                          /* S'il s'avère que l'objet actuel est un dossier */
                                          if(is_dir($cur."/".$file))
                                          {
                                            /* On s'assure qu'il ne s'agisse ni du dossier courant (ou chemin) ni du dossier parent */
                                            if(!in_array($file, array(".","..")))
                                            {
                                              $tab_dir[] = addScheme($file, $cur, 'dir');
                                            }
                                          } 
                                    
                                          /* Sinon c'est un fichier */      
                                          else
                                          {
                                              $t = explode('.', $file);
                                    
                                              /* On ajoute le fichier au tableau seulement si son extension n'est pas "php3" */
                                              if($t[count($t) - 1] != "php3")
                                              {
                                                 $tab_file[] = addScheme($file, $cur, 'file');
                                              }
                                          }
                                        } 
                                    ?>
                                    


                                    Voilà, normalement avec cette simple modification ça devrait passer sans problème, à noter que nous avons modifier notre condition de "==" à "!=" pour que ce soit plus logique.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      2 janvier 2009 à 17:49:26

                                      Salut the_fear
                                      Je ne sais pas combien de temps tu as passé pour réaliser cet adaptation de script mais en tout cas je te remercie de m’avoir accordé du temps pour comprendre et résoudre mon problème.
                                      De plus tu as rajouté des commentaires pour bien comprendre la procédure, merci beaucoup

                                      Je viens de tester, et c’est fabuleux, nous ne voyons plus les fichiers avec les extensions php3, c’est exactement ce que je recherché à faire.

                                      Pour les autres adaptations, je vais essayer de plus m’approfondir dans le php pour y arriver.

                                      Merci beaucoup, très bonne année à toi
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      [Réglé] Afficher le contenu du dossier en PHP

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown