Lister contenue d'un répertoire

Résolu/Fermé
toto-05 - 10 nov. 2010 à 17:00
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 - 6 janv. 2011 à 04:24
Bonjour,

je ne trouve pas où mettre le chemin du répertoire dans ce code

merci d'avance

<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Liste répertoires et sous-répertoires                     */
/*                                                                            */
/* URL            : https://phpsources.net/code/php/fichiers-repertoires/61_liste-repertoires-et-sous-repertoires               */
/* 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($m, 2, ',', ' '); 
  } 
  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($ext, array_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 : 1; 
    } else { 
        return ($a['name'] > $b['name']) ? -1 : 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 : 1; 
    } else { 
        return ($a['size'] > $b['size']) ? -1 : 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 : 1; 
    } else { 
        return ($a['date'] > $b['date']) ? -1 : 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 : 1; 
    } else { 
        return ($a['access'] > $b['access']) ? -1 : 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 : 1; 
    } else { 
        return ($a['perms'] > $b['perms']) ? -1 : 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 : 1; 
    } else { 
        return ($a['type'] > $b['type']) ? -1 : 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 : 1; 
    } else { 
        return ($a['ext'] > $b['ext']) ? -1 : 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($BASE, rawurldecode($dir), 1);   
?> 


</td><td> 


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

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


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

3 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
12 nov. 2010 à 19:56
Salut.

Là :
/* racine */ 
$BASE = '../';
2
merci beaucoup

bonne soirée
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
3 janv. 2011 à 18:46
SALUT !! BONNE ANNEE !!

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!!
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
3 janv. 2011 à 21:01
Pense à ajouter les délimiteurs (souvent des dièses ou des slashes)
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
4 janv. 2011 à 12:01
j'ai essayer mais ça me renvoie toujours des erreurs !!
TU pourrais me donner un exemple s'il te plait !!
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
4 janv. 2011 à 12:08
Quelle est l'erreur?
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
6 janv. 2011 à 04:24
Voici l'erreur ->
Warning: preg_match() [function.preg-match]: Unknown modifier 'a' in C:\wamp\www\Nouveau dossier (2)\index.php on line 50

et le code ->
if(preg_match("/".$file."/","/".$cur."/"))
0