Vous êtes ici Codes PHP et MySQL > Fichiers-Répertoires > Liste répertoires et sous-répertoires

 

Liste répertoires et sous-répertoires

Liste répertoires et sous-répertoires
Fonctionne avec superglobal à OFF
Présentation dans un tableau
Utiliser les icones windows.
 
Mathieu
[20] sources en PHP voir
Code vu 15990 fois
Enregistré le 01 Sept 2004
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Liste répertoires et sous-répertoires
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Liste répertoires et sous-répertoires                     */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts61-PHP.htm               */
/* Auteur         : Mathieu                                                   */
/* Date édition   : 01 Sept 2004                                              */
/*                                                                            */
/******************************************************************************/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<style type="text/css"> 
* {font-size: 10pt;} 
a:link, a:hover, a:active, a:visited {color: #0000FF;} 
</style> 
</head> 

<body> 

<?php 
$order = isset($_GET['order']) ? $_GET['order'] : ''$order0 = isset($_GET['order0']) ? $_GET['order0'] : ''$dir = isset($_GET['dir']) ? $_GET['dir'] : ''$asc = isset($_GET['asc']) ? $_GET['asc'] : ''/* racine */ 
$BASE '../'/* infos à extraire */ 
function addScheme($entry,$base,$type) { 
  $tab['name'] = $entry; 
  $tab['type'] = filetype($base.'/'.$entry); 
  $tab['date'] = filemtime($base.'/'.$entry); 
  $tab['size'] = filesize($base.'/'.$entry); 
  $tab['perms'] = fileperms($base.'/'.$entry); 
  $tab['access'] = fileatime($base.'/'.$entry); 
  $t explode('.'$entry); 
  $tab['ext'] = $t[count($t)-1]; 
  return $tab; 
} 


/* liste des dossiers */ 
function list_dir($base$cur$level=) { 
  global $BASE$order$asc; 
  if ($dir opendir($base)) { 
    $tab = array(); 
    while($entry readdir($dir)) { 
      if(is_dir($base.'/'.$entry) && !in_array($entry, array('.','..'))) { 
        $tab[] = addScheme($entry$base'dir'); 
      } 
    } 
    /* tri */ 
    usort($tab,'cmp_name'); 
    foreach($tab as $elem) { 
      $entry $elem['name']; 
      /* chemin relatif à la racine */ 
      $file $base.'/'.$entry; 
     /* marge gauche */ 
      for($i=1$i<=(4*$level); $i++) { 
        echo ' '; 
      } 
      /* l'entrée est-elle le dossier courant */ 
      if($file == $cur) { 
        echo "<img src=\"images/dir-open.gif\" /> $entry<br />\n"; 
      } else { 
        echo 
"  <img src=\"images/dir-close.gif\" /> <a href=\"$_SERVER[PHP_SELF]?dir=".
rawurlencode($file)."&order=$order&asc=$asc\">$entry</a><br />\n"; 
      } 
      
/* l'entrée est-elle dans la branche dont le dossier courant est la feuille */ 
      if(ereg($file.'/',$cur.'/')) { 
        list_dir($file$cur$level+1); 
      } 
    } 
    closedir($dir); 
  } 
} 


/* liste des fichiers */ 
function list_file($cur) { 
  global $order$asc$order0; 
  if ($dir opendir($cur)) { 
    /* tableaux */ 
    $tab_dir = array(); 
    $tab_file = array(); 
    /* 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'); 
      } 
    } 
    /* tri */ 
    usort($tab_dir,'cmp_'.$order); 
    usort($tab_file,'cmp_'.$order); 
    /* affichage */ 
    echo '<table cellspacing="0" cellpadding="0" border="0">'; 
    echo '<tr style="font-size:8pt;font-family:arial;"> 
    <th>'.(($order=='name')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=name&asc=$asc&order0=$order\">Nom</a></th><td> </td> 
    <th>".(($order=='size')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=size&asc=$asc&order0=$order\">Taille</a></th><td> </td> 
    <th>".(($order=='date')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=date&asc=$asc&order0=$order\">Dernière modification</a></th><td>" .
" </td> 
    <th>".(($order=='type')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=type&asc=$asc&order0=$order\">Type</a></th><td> </td> 
    <th>".(($order=='ext')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=ext&asc=$asc&order0=$order\">Extention</a></th><td> </td> 
    <th>".(($order=='perms')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=perms&asc=$asc&order0=$order\">Permissions</a></th><td> </td> 
    <th>".(($order=='access')?(($asc=='a')?'/\\ ':'\\/ '):'').
"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
"&order=access&asc=$asc&order0=$order\">Dernier accès</a></th></tr>"; 
    foreach($tab_dir as $elem) { 
      echo '<tr><td><img src="images/dir-close.gif" /> '.$elem['name'].
'</td><td> </td> 
      <td> </td><td>  </td> 
      <td>'.date("d/m/Y H:i:s"$elem['date']).'</td><td> </td> 
      <td>'.assocType($elem['type']).'</td><td> </td> 
      <td> </td><td>  </td> 
      <td>'.$elem['perms'].'</td><td>  </td> 
      <td>'.date("d/m/Y"$elem['access'])."</td></tr>\n"; 
    } 
    foreach($tab_file as $elem) { 
      echo '<tr><td><img src="images/file-none.gif" /> '.$elem['name'].
'</td><td> </td> 
      <td align="right">'.formatSize($elem['size']).'</td><td> </td> 
      <td>'.date("d/m/Y H:i:s"$elem['date']).'</td><td>  </td> 
      <td>'.assocType($elem['type']).'</td><td>  </td> 
      <td>'.assocExt($elem['ext']).'</td><td>  </td> 
      <td>'.$elem['perms'].'</td><td>  </td> 
      <td>'.date("d/m/Y"$elem['access'])."</td></tr>\n"; 
    } 
    echo "</table>"; 
    closedir($dir); 
  } 
} 


/* formatage de la taille */ 
function formatSize($s) { 
  /* unités */ 
  $u = array('octets','Ko','Mo','Go','To'); 
  /* compteur de passages dans la boucle */ 
  $i = ; 
  /* nombre à afficher */ 
  $m = ; 
  /* division par 1024 */ 
  while($s >= 1) { 
    $m $s; 
    $s /= 1024; 
    $i++; 
  } 
  if(!$i$i=1; 
  $d explode('.',$m); 
  /* s'il y a des décimales */ 
  if($d[] != $m) { 
    $m number_format($m2','' '); 
  } 
  return $m.' '.$u[$i-1]; 
} 


/* formatage du type */ 
function assocType($type) { 
  /* tableau de conversion */ 
  $t = array( 
    'fifo' => 'file', 
    'char' => 'fichier spécial en mode caractère', 
    'dir' => 'dossier', 
    'block' => 'fichier spécial en mode bloc', 
    'link' => 'lien symbolique', 
    'file' => 'fichier', 
    'unknown' => 'inconnu' 
  ); 
  return $t[$type]; 
} 


/* description de l'extention */ 
function assocExt($ext) { 
  $e = array( 
    '' => "inconnu", 
    'doc' => "Microsoft Word", 
    'xls' => "Microsoft Excel", 
    'ppt' => "Microsoft Power Point", 
    'pdf' => "Adobe Acrobat", 
    'zip' => "Archive WinZip", 
    'txt' => "Document texte", 
    'gif' => "Image GIF", 
    'jpg' => "Image JPEG", 
    'png' => "Image PNG", 
    'php' => "Script PHP", 
    'php3' => "Script PHP", 
    'htm' => "Page web", 
    'html' => "Page web", 
    'css' => "Feuille de style", 
    'js' => "JavaScript" 
  ); 
  if(in_array($extarray_keys($e))) { 
    return $e[$ext]; 
  } else { 
    return $e['']; 
  } 
} 


function cmp_name($a,$b) { 
    global $asc; 
    if ($a['name'] == $b['name']) return ; 
    if($asc == 'a') { 
        return ($a['name'] < $b['name']) ? -1; 
    } else { 
        return ($a['name'] > $b['name']) ? -1; 
    } 
} 
function cmp_size($a,$b) { 
    global $asc; 
    if ($a['size'] == $b['size']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['size'] < $b['size']) ? -1; 
    } else { 
        return ($a['size'] > $b['size']) ? -1; 
    } 
} 
function cmp_date($a,$b) { 
    global $asc; 
    if ($a['date'] == $b['date']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['date'] < $b['date']) ? -1; 
    } else { 
        return ($a['date'] > $b['date']) ? -1; 
    } 
} 
function cmp_access($a,$b) { 
    global $asc; 
    if ($a['access'] == $b['access']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['access'] < $b['access']) ? -1; 
    } else { 
        return ($a['access'] > $b['access']) ? -1; 
    } 
} 
function cmp_perms($a,$b) { 
    global $asc; 
    if ($a['perms'] == $b['perms']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['perms'] < $b['perms']) ? -1; 
    } else { 
        return ($a['perms'] > $b['perms']) ? -1; 
    } 
} 
function cmp_type($a,$b) { 
    global $asc; 
    if ($a['type'] == $b['type']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['type'] < $b['type']) ? -1; 
    } else { 
        return ($a['type'] > $b['type']) ? -1; 
    } 
} 
function cmp_ext($a,$b) { 
    global $asc; 
    if ($a['ext'] == $b['ext']) return cmp_name($a,$b); 
    if($asc == 'a') { 
        return ($a['ext'] < $b['ext']) ? -1; 
    } else { 
        return ($a['ext'] > $b['ext']) ? -1; 
    } 
} 
?> 


<table border="1" cellspacing="0" cellpadding="10" bordercolor="gray"> 
<tr valign="top"><td> 


<!-- liste des répertoires 
et des sous-répertoires --> 
<?php 
if(!in_array($order, array('name','date','size','perms','ext','access','type')))
 { 
  $order 'name'; 
} 
if(($order == $order0) && ($asc != 'b')) { 
  $asc 'b'; 
} else { 
  $asc 'a'; 
} 
/* lien sur la racine */ 
if(!$dir) { 
  echo "<img src=\"images/dir-open.gif\" /> /<br />\n"; 
} else { 
  echo 
"<img src=\"images/dir-close.gif\" /> <a href=\"$_SERVER[PHP_SELF]\">/</a><br" .
" />\n"; 
} 
list_dir($BASErawurldecode($dir), 1);   
?> 


</td><td> 


<!-- liste des fichiers --> 
<?php 

/* répertoire initial à lister */ 
if(!$dir) { 
  $dir $BASE; 
}   
list_file(rawurldecode($dir));   
?> 


</td></tr> 
</table> 

 

Fonctions du code

: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Retourne le type de fichier - (PHP 4, PHP 5)
: Lit la date de dernière modification du fichier - (PHP 4, PHP 5)
: Lit la taille d'un fichier - (PHP 4, PHP 5)
: Lit les droits d'un fichier - (PHP 4, PHP 5)
: Renvoie la date à laquelle le fichier a été accédé pour la dernière fois - (PHP 4,...
: Coupe une chaîne en segments - (PHP 4, PHP 5)
: Compte le nombre d'éléments d'un tableau ou le nombre de propriétés...
: - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Lit une entrée du dossier - (PHP 4, PHP 5)
: Indique si une valeur appartient à un tableau - (PHP 4, PHP 5)
: Indique si le fichier est un dossier - (PHP 4, PHP 5)
: Trie un tableau en utilisant une fonction de comparaison - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Encode une chaîne en URL, selon la RFC 1738 - (PHP 4, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
: Ferme le pointeur sur le dossier - (PHP 4, PHP 5)
: Formate une date/heure locale - (PHP 4, PHP 5)
: Formate un nombre pour l'affichage - (PHP 4, PHP 5)
: Retourne toutes les clés d'un tableau - (PHP 4, PHP 5)
: Décode une chaîne URL - (PHP 4, PHP 5)
Commentaires
Le lien de dl ne marche pas ;)

sinon sa m'affiche qu'un "/" dans un tableau oO
 
Ce script est nickel !! Voir ++
regarde la base, j'ai modifier en :
$BASE = '../';
+ clair pour les débutants ^^
..ce qui est plus juste si tu met le script à la racine, mais bon c'est la BASE du webmastering que de connaitre les chemins : ../../../

Merci pour l'info des icones, ^^
++
 
dsl pour le double post sa a bugger :(

sinon j'ai trouver l'erreur pour $BASE = '../'; , j'ai mis :
$BASE = 'g:\neeweb\sites\scoubidou\';
 
voici les erreurs qu'il me renvoie :

[20-Aug-2005 11:50:16] PHP Warning: opendir(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (./;g:/neeweb/global_require/) in g:\neeweb\sites\scoubidou\explotest.php on line 47

[20-Aug-2005 11:50:16] PHP Warning: opendir(../): failed to open dir: Operation not permitted in g:\neeweb\sites\scoubidou\explotest.php on line 47

[20-Aug-2005 11:50:16] PHP Warning: opendir(): open_basedir restriction in effect. File(../) is not within the allowed path(s): (./;g:/neeweb/global_require/) in g:\neeweb\sites\scoubidou\explotest.php on line 84

[20-Aug-2005 11:50:16] PHP Warning: opendir(../): failed to open dir: Operation not permitted in g:\neeweb\sites\scoubidou\explotest.php on line 84

http://www.sites.neeweb.com/scoubidou/explotest.php
 
Depuis hier je me casse la tete a faire un lien pour les fichier, mais je n'arrive pas a mettre le /, a tu une solution a me proposer ?

http://sites.neeweb.com/scoubidou/a.php
 
Salut,
le script est nickel, sauf que j'ai des messages d"erreur aussi !
Je me penche la dessus !
Est-il possible de rendre les noms de fichiers qui apparaissent à droites interactif via des liens hypertextes ?
D'avance merci.
wink
 
Voila j'ai un problème avec le script !! Car la fonction EREG() n'est plus supporter !! Je l'ai remplacer pas PREG-MATCH() mais ça beug!! 
 
essaye :

if(preg_match("/$file.'\/'/", $cur.'/', $matches))
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Fichiers-Répertoires

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité