begin process at 2008 08 20 12:02:34
1 228 769 membres
141 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTAGE DE REPERTOIRE D'UN SITE WEB


Information sur la source

Catégorie :Fichier / Disque Classé sous : repertoire, list, opendir, readdir Niveau : Débutant Date de création : 07/08/2006 Date de mise à jour : 07/08/2006 17:31:27 Vu / téléchargé: 6 481 / 512

Note :
2,33 / 10 - par 3 personnes
2,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Bonjour,

Ce script permet de faire une liste des répertoires et des fichiers contenus dans un répertoire de votre site web. Il permet de reconnaître les type de fichier, mais actuellement il ne fait rien de plus que les exécutes si vous cliquer dessus. Je laisse a vos soit d’un faire ce que vous désirer.

Vous pouvez critiquer non code parce que cela me permettra de m’amélioré personnellement. Je commence en PHP alors faut me donner de bon conseil et merci d’avance.

Source

  • <?
  • // DECLARATION DES VARIABLES.
  • $REP_LIST = opendir('.');
  • $REP_NAME = 'page_admlist.php';
  • $REP_FILE = '';
  • $REP_TYPE = '';
  • $LNGI = 0;
  • $LNGJ = 0;
  • $LNGK = 0;
  • // LISTAGE DU REPERTOIRE DU SITE.
  • while ($REP_FILE = readdir($REP_LIST)){
  • if($REP_FILE != '..' && $REP_FILE != '.' && $REP_FILE != ''){
  • $LNGI++;
  • $LNGJ++;
  • if ($LNGJ > 1){
  • $LNGJ = 0;
  • $IMG_GRND = 'back_ground01b.gif';
  • }else{
  • $IMG_GRND = 'back_ground01a.gif';
  • }
  • if (is_dir($REP_FILE)){
  • echo "<TABLE WIDTH='600' HEIGHT='19' NOBORDER CELLPADDING='0' CELLSPACING='0'>\n";
  • echo " <TR>\n";
  • echo " <TD WIDTH='40' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#F28E04'><B>&nbsp;&nbsp;DIR</B></FONT></TD>\n";
  • echo " <TD WIDTH='*' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' STYLE='cursor:hand;' onMouseOut='mouseOutA(TEXTA".$LNGI.");' onMouseOver='mouseOverA(TEXTA".$LNGI.");' onClick='ChangePage(\"".$REP_FILE."/\");'><FONT FACE='Verdana' SIZE='1' COLOR='#808080'><B><DIV ID='TEXTA".$LNGI."'>".strtoupper($REP_FILE)."</DIV></B></FONT></TD>\n";
  • echo " <TD WIDTH='80' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>&nbsp;</B></FONT></TD>\n";
  • echo " </TR>\n";
  • echo "</TABLE>\n";
  • }else{
  • $LNGK = strpos($REP_FILE, '.');
  • $LNGK = strlen($REP_FILE)-$LNGK;
  • if ($LNGK > 0 && $LNGK < strlen($REP_FILE)){
  • $REP_TYPE = strtoupper(substr($REP_FILE,strlen($REP_FILE)-($LNGK-1),($LNGK-1)));
  • }else{
  • $LNGK = 0;
  • $REP_TYPE = '???';
  • }
  • switch ($REP_TYPE){
  • case 'HTML':
  • $REP_TYPE = 'HTM';
  • break;
  • case 'MPEG':
  • $REP_TYPE = 'MPG';
  • break;
  • }
  • if(strtolower($REP_FILE)!=$REP_NAME){
  • echo "<TABLE WIDTH='600' HEIGHT='19' NOBORDER CELLPADDING='0' CELLSPACING='0'>\n";
  • echo " <TR>\n";
  • echo " <TD WIDTH='40' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>&nbsp;&nbsp;".$REP_TYPE."</B></FONT></TD>\n";
  • echo " <TD WIDTH='*' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' STYLE='cursor:hand;' onMouseOut='mouseOutA(TEXTA".$LNGI.");' onMouseOver='mouseOverA(TEXTA".$LNGI.");' onClick='ChangePage(\"".$REP_FILE."\");'><FONT FACE='Verdana' SIZE='1' COLOR='#808080'><B><DIV ID='TEXTA".$LNGI."'>".strtoupper(substr($REP_FILE,0,strlen($REP_FILE)-($LNGK)))."</DIV></B></FONT></TD>\n";
  • echo " <TD WIDTH='80' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' ALIGN='right'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>".number_format((filesize($REP_FILE)/1000),3,"."," ")." Ko&nbsp;</B></FONT></TD>\n";
  • echo " </TR>\n";
  • echo "</TABLE>\n";
  • }
  • }
  • }
  • }
  • closedir($REP_LIST);
  • clearstatcache();
  • ?>
<?
// DECLARATION DES VARIABLES.
$REP_LIST 	= opendir('.');
$REP_NAME	= 'page_admlist.php';
$REP_FILE 	= '';
$REP_TYPE	= '';
$LNGI 		= 0;
$LNGJ 		= 0;
$LNGK 		= 0;

// LISTAGE DU REPERTOIRE DU SITE.
while ($REP_FILE = readdir($REP_LIST)){
	if($REP_FILE != '..' && $REP_FILE != '.' && $REP_FILE != ''){
		$LNGI++;
		$LNGJ++;
		if ($LNGJ > 1){
			$LNGJ		= 0;
			$IMG_GRND 	= 'back_ground01b.gif';
		}else{
			$IMG_GRND 	= 'back_ground01a.gif';
		}
		if (is_dir($REP_FILE)){
			echo "<TABLE WIDTH='600' HEIGHT='19' NOBORDER CELLPADDING='0' CELLSPACING='0'>\n";
			echo "	<TR>\n";
			echo "	<TD WIDTH='40' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#F28E04'><B>&nbsp;&nbsp;DIR</B></FONT></TD>\n";
			echo "	<TD WIDTH='*' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' STYLE='cursor:hand;' onMouseOut='mouseOutA(TEXTA".$LNGI.");' onMouseOver='mouseOverA(TEXTA".$LNGI.");' onClick='ChangePage(\"".$REP_FILE."/\");'><FONT FACE='Verdana' SIZE='1' COLOR='#808080'><B><DIV ID='TEXTA".$LNGI."'>".strtoupper($REP_FILE)."</DIV></B></FONT></TD>\n";
			echo "	<TD WIDTH='80' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>&nbsp;</B></FONT></TD>\n";
			echo "	</TR>\n";
			echo "</TABLE>\n";
		}else{
			$LNGK = strpos($REP_FILE, '.');
			$LNGK = strlen($REP_FILE)-$LNGK;
			if ($LNGK > 0 && $LNGK < strlen($REP_FILE)){
				$REP_TYPE = strtoupper(substr($REP_FILE,strlen($REP_FILE)-($LNGK-1),($LNGK-1)));
			}else{
				$LNGK = 0;
				$REP_TYPE = '???';
			}
			switch ($REP_TYPE){
				case 'HTML':
					$REP_TYPE = 'HTM';
					break;
				case 'MPEG':
					$REP_TYPE = 'MPG';
					break;
			}

			if(strtolower($REP_FILE)!=$REP_NAME){
				echo "<TABLE WIDTH='600' HEIGHT='19' NOBORDER CELLPADDING='0' CELLSPACING='0'>\n";
				echo "	<TR>\n";
				echo "	<TD WIDTH='40' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>&nbsp;&nbsp;".$REP_TYPE."</B></FONT></TD>\n";
				echo "	<TD WIDTH='*' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' STYLE='cursor:hand;' onMouseOut='mouseOutA(TEXTA".$LNGI.");' onMouseOver='mouseOverA(TEXTA".$LNGI.");' onClick='ChangePage(\"".$REP_FILE."\");'><FONT FACE='Verdana' SIZE='1' COLOR='#808080'><B><DIV ID='TEXTA".$LNGI."'>".strtoupper(substr($REP_FILE,0,strlen($REP_FILE)-($LNGK)))."</DIV></B></FONT></TD>\n";
				echo "	<TD WIDTH='80' HEIGHT='19' BACKGROUND='pics/".$IMG_GRND."' ALIGN='right'><FONT FACE='Verdana' SIZE='1' COLOR='#4374B9'><B>".number_format((filesize($REP_FILE)/1000),3,"."," ")." Ko&nbsp;</B></FONT></TD>\n";
				echo "	</TR>\n";
				echo "</TABLE>\n";
			}

		}
	}
}
closedir($REP_LIST);
clearstatcache();
?>

Conclusion

Voila le code PHP et la source aussi pour les jsp et les images.

@++
[GALLY HOME CORP]
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

07 août 2006 17:31:27 :
Modification des " par des '.
  • signaler à un administrateur
    Commentaire de Palleas_44 le 07/08/2006 14:58:24

    J'ai peur de lire serieusement ce morceau de code, c'est sale :s double quote au lieu de simple, HTML pas bô etc... j'ai pas mis de note, j'attend de voir ^_^

  • signaler à un administrateur
    Commentaire de Gally le 07/08/2006 16:49:44

    Bonjour Palleas_44,

    Peu tu me dire ce ke tu ne trouve Sale et pas beau au niveau de l'HTML?

    A++

  • signaler à un administrateur
    Commentaire de kankrelune le 07/08/2006 20:05:07

    Un peu tout... .. .

    Il faut mettre le attributs en minuscules et non en majuscules... la valeur des attributs doit etre entre doubles quotes et non entre simples quotes... préfère les css plutot que des attributs html pour la mise en forme... la balise font est dépréciées (utilise les css)... .. .

    Je rajouterais...

    - il serait mieux de mettre ça en fonction afin de pouvoir l'utiliser dans différentes conditions

    - tu ne teste pas ni l'existance du fichier cible (pas important dans ce cas d'utilisation mais ça peut l'etre) ni la réussite (ou non) de l'ouverture du dossier cible

    - tu fais des tas de strtoupper, strtolower, strlen, strpos alors qu'un seul pourrait suffire (le résultat servant plusieurs fois) dans la plupart des cas

    - remplacer

    while($REP_FILE = readdir($REP_LIST))

    par

    while(false !== ($REP_FILE = readdir($REP_LIST)))

    - ton switch pour le type de fichier est totalement inutile

    - tu fais des echo à la pelle là ou un seul suffirait... utilise les simples quotes pour entoure la chaine de caractères à afficher vu que tu concatène tes variables... .. .

    - dans les lignes :

    $LNGK = strpos($REP_FILE, '.');
    $LNGK = strlen($REP_FILE)-$LNGK;
    if ($LNGK > 0 && $LNGK < strlen($REP_FILE)){
            $REP_TYPE = strtoupper(substr($REP_FILE,strlen($REP_FILE)-($LNGK-1),($LNGK-1)));
    }else{
            $LNGK = 0;
            $REP_TYPE = '???';
    }

    tu fais comment si le strpos ne trouve pas le point et renvoi false... et tu fais comment si le fichier s'appel, par exemple, pwet.test.php ?

    $LNGK = strrpos($REP_FILE, '.');

    if($LNGK !== false)
       $REP_TYPE = strtoupper(substr($REP_TYPE,$LNGK+1));
    else
    {
       $LNGK = 0;
       $REP_TYPE = '???';
    }

    Voila ce qui me vient à l'esprit (j'en ais peut être loupé)... une amélioration interessante serait de gérer (en option) la récursivitée... et éventuellement d'affficher le nom des fichiers/répertoire sous forme de lien pointant ces derniers... .. .


    Je met 5/10... .. .

    @ tchaOo°

  • signaler à un administrateur
    Commentaire de Anthomicro le 07/08/2006 23:17:54

    Salut,

    j'ai fait un petit code qui me servait à lister les fichiers rapidement d'un site web (qui avait des failles en général m'enfin passons XD) :

    <style>
    code{
    display:block;
    width:900px;
    overflow:auto;
    }
    </style>
    <?php
    function lire_dossier($dossier='../..')
    {
    $dossier2=opendir($dossier);

    while(($fichier=readdir($dossier2))!==FALSE)
    {
    $extension=strrchr($dossier.'/'.$fichier,'.');

    if($fichier!=='.' AND $fichier!=='..' AND ($extension==='.php' OR $extension==='.txt' OR $extension==='.html' OR $extension==='.htm'))
    {
    if(is_file($dossier.'/'.$fichier))
    {
    echo '<p>------------------------------<br />fichier : <strong> ',$dossier,'/',$fichier,'</strong></p>
    <code>',str_replace("\n",'<br />',htmlentities(file_get_contents($dossier.'/'.$fichier))),'</code>';
    }
    }
    elseif($fichier!=='.' AND $fichier!=='..' AND is_dir($dossier.'/'.$fichier))
    {
    echo '<p style="font-color:#CC0000;font-size:3em">DOSSIER : ',$dossier,'/',$fichier,'</p>';

    lire_dossier($dossier.'/'.$fichier);
    }
    }
    }

    lire_dossier('/');
    ?>

  • signaler à un administrateur
    Commentaire de Anthomicro le 07/08/2006 23:18:38

    PS : désolé pour l'indentation...

  • signaler à un administrateur
    Commentaire de Gally le 07/08/2006 23:29:35

    Salut a ce qui on repondu,

    Je viens du vb et toute les critiques constructives qui pourront me faire evoluer en php dont les bien venu. franchement desole si la premiere versont il y a beausoup de chose a dire. c'est la sessus que je compter pour avoir par la suite une version "super" pour tout le monde.

    Sinon si vous regarder sur CS je suis un tres bon bosseur en VB et je me met en php et j'espere que avec vos conseil j'evolurer aussi dans le bon sens en php

    merci encore
    A++
    Gally

  • signaler à un administrateur
    Commentaire de Gally le 08/08/2006 22:23:22

    Bonjour,

    Visiblement cette source n’a aucune raison d’être sur ce site, vu la note et les critiques, je vais donc faire une demande de suppression de celle-ci. Ce qui est très dommage c’est pour certain au lieu de faire de grosse critique il serait bon de donné des conseils.

    Et je vais continuer mon chemin en vb, parce-ce que visiblement le PHP c’est pas pour moi.

    @++
    [Gally Home Corp]

  • signaler à un administrateur
    Commentaire de BruNews le 08/08/2006 23:29:30 administrateur CS

    Faudra te faire aux discussions et aux notes des PHPistes, aucun rapport avec les VBistes.
    Le style est nettement plus bourru mais c'est juste une question d'habitude, de bons gars serviables en fin de compte.
    Persévère et tout ira pour le mieux.

  • signaler à un administrateur
    Commentaire de Anthomicro le 08/08/2006 23:59:49

    Quoi on a pas été sympas ? :-(

  • signaler à un administrateur
    Commentaire de kankrelune le 09/08/2006 02:52:16

    En fait moi j'ais mis 5 mais visiblement quelqu'un a mis 1 d'où la moyennne... faudrait virer le 1... .. . ;o)

    Quand aux conseils n'hésite pas à demander.... on ne peut pas deviner... .. . :o)

    Il n'y a aucune raison d'abandoner le php... on à tous débutés un jour... .. . ;o)

    @ tchaOo°

  • signaler à un administrateur
    Commentaire de malalam le 09/08/2006 09:06:42 administrateur CS

    Gally => tu ferais mieux de faire plus attention aux commentaires qu'aux notes. Tu en as eu de constructifs : Kankrelune n'a pas lésiné sur les explications et Anthomicro t'a montré une autre façon de faire, plus correcte.
    Après, les notes sans commentaires...il y en aura toujours. Mais elles ne font pas avancer grand chose.
    Je n'efface pas les deux 1/10 parce que j'attends que leurs auteurs se justifient (ce qu'ils ne manqueront pas de faire, j'en suis sûr, vu qui ils sont). Ils ont sans doute leurs raisons.

  • signaler à un administrateur
    Commentaire de Gally le 09/08/2006 12:09:42

    Bonjour,

    C'est au niveau des commentaires sa j'ai bien vu qu'il y en avait de très constructif et justement j'aissais de les analysés et de modifier mon code source.

    Merci a tout ce qui on fait de bonne critiques,
    A++
    [Gally Home Corp]

  • signaler à un administrateur
    Commentaire de Gally le 19/08/2006 02:00:59

    Bonjour tout le monde,

    Je suis en train de modifier cette version avec vos conseils. J'espere que cela sera beaucoup mieu ;-).

    Vous pouvez toujours donner de bon conseil pour que cela devienne une source au "top" ;-)

    Merci et A++
    Gally

  • signaler à un administrateur
    Commentaire de viking_force le 22/08/2006 09:49:49

    bonjour a tous......

    aucune remarque a formulé (les autres l'on très bien fait)
    je viens juste mettre mon grain de sel et proposer une autre technique, avec fonction recursive (pas dur) et affichage aux normes (normalement)

    y'a p'tet deux ou trois trucs pas très catholique dans le code, mais en général il est plustot propre....

    <?php
    $num_folder = '1';

    function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossier
    {
    global $num_folder;
    $dir = opendir($Folder);
    while (false !== ($Current = readdir($dir))) {// Boucle sur tout ce qu'il y a dans le répertoire
      if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false) {
        if(is_dir($Folder.'/'.$Current)) {// Si c'est un dossier
          echo '
    <li class="plus"><a href="#" onclick="ShowMenu('.$num_folder.');">'.$Current.'</a>
    <ul id="Couche'.$num_folder.'" style="display: none;">';
          $num_folder++;
          ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
          echo '
    </ul>
    </li>';
        }else{
          $FileExt = strtolower(substr(strrchr($Current ,'.'),1));
          if (in_array($FileExt, $SkipFileExts)===false) { // On regarde si on dois afficher cette extension
            echo '
    <li class="folder">'.$Current.'</li>';
          }
          //c'est là que l'on reviens de la récursivité ou fichier a la racine
        }
      }
    }
    closedir($dir);
    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>:: Test</title>
    <meta http-equiv="Content-Type" content="text/html; CHARSET=iso-8859-1" />
    <style type="text/css">
    img {
    border: 0;
    }
    .plus {
    list-style: url(./images/plus.gif);
    }
    .moin {
    list-style: url(./images/moin.gif);
    }
    .folder {
    list-style: url(./images/fichier.png);
    }
    </style>
    <script type="text/javascript">
    function ShowMenu(nomcouche) {
    document.getElementById('Couche'+nomcouche).style.display=(document.getElementById('Couche'+nomcouche).style.display=='block')?'none':'block';
    document.getElementById('Couche'+nomcouche).parentNode.className=(document.getElementById('Couche'+nomcouche).parentNode.className=='plus')?'moin':'plus';
    }
    </script>
    </head>
    <body>
    <ul>
      <?php
       $Folder = './';
       $SkipExts = array('localized', 'ds_store');   //extension propre aux MAC
       $SkipObjects = array('UnDossier', 'UnFichier');
       ListFolder($Folder, $SkipExts, $SkipObjects);
      ?>    
    </ul>
    </body>
    </html>

    si ca peut aider......si y'a besoin d'explications.......
    PS: le code n'est pas entièrement de moi, je me suis bcp inspirer de la création d'un menbre du site allhtml.com (me souviens plus qui...)

  • signaler à un administrateur
    Commentaire de kurt67 le 22/08/2006 13:22:57

    Ben dans le genre vous pouvez jetez un ptit coup d'oeil à ma source (oui je fait un peu de pub): http://zebigbrozer.free.fr/nav/ (il y a une démo et le zip)
    Je l'avais aussi posté sur phpcs mais ce n'est pas la dernière version et quand j'essaye d'updater mon code il affichait un message d'erreur.
    C'est aux normes xhtml1.0 strict et css et utilise le javascript et est largement paramétrable (il est justement possible de ne pas utiliser le javascript).
    L'idée de base c'est d'avoir un navigateur expandable qui n'a pas besoin de se recharger (tout est chargé en une fois)

  • signaler à un administrateur
    Commentaire de CString le 04/09/2006 16:00:53

    Ha tient j'avais pas vu celui la , j'ai posté casiment la même source que anthomicro ...

Ajouter un commentaire

Pub



Appels d'offres

Snippets en rapport

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS