mini56 | Bonjour,
Alors j'ai un petit problème sur un bout de code php, je vous explique.
J'ai un index.php sur mon serveur debié linux (LAMP). Sur ce serveur je veux pouvoir lister le contenu de certain dossier. Pour cela je rajoute un index.php et il me liste proprement, avec la taille des fichiers, et aussi un tri alphabétique en séparant dossier et fichier, et surtout il me met un icône dossier ou fichier devant les dossiers ou fichiers. Mais (voila mon problème) lorsqu'un dossier contient un point alors il me met un icône fichier trêve de blabla j’envoie le code (il est pas complet) :
Code :
- <?php
- echo'<br><font color="FF0000">';
- ?>
- </td></tr>
- <?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(!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];
- }
- 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 != 'html' and $ext_fichier != 'swp' and $ext_fichier != 'htpasswd' and $ext_fichier != 'htaccess' ) { //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
- $IMG_EXT= array(".jpg",".png" );
- foreach($fichier as $value) {
- if (in_array(substr($value,-4), $IMG_EXT)){
- $size=round(filesize($value) / 1024/1024, 5);
- echo "<tr><td><a href=$value><img src=$value width='10%' height='10%'></a></td><td> $size mo </td></tr>";
- }else {
- if(preg_match("*/*",$value)) { // c'est un dossier
- echo "<tr><td><img src=monimagedossier.png> ";
- echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></td>';
- echo "<td></td></tr>";}
- else { //c'est un fichier
- $ssize=round(filesize($value) / 1024/1024, 5);
- echo "<tr><td><img src=monimagefichier.png> ";
- echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></td>';
- echo "<td>  $ssize mo</td></tr>";
- }
- }
- }
- }
- //exemple d'utilisation :
- listing('.'); //chemin du dossier
- ?>
|
Alors j'arrive à afficher les dossiers comme il faut mais je n'est plus les dossiers en premier en utilisant ce code :
Code :
- <?php
- echo'<br><font color="FF0000">';
- ?>
- </td></tr>
- <?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(!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];
- }
- else {
- //if(strstr(filetype($file), 'dir')) { $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 != 'html' and $ext_fichier != 'swp' and $ext_fichier != 'htpasswd' and $ext_fichier != 'htaccess' ) { //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
- $IMG_EXT= array(".jpg",".png" );
- foreach($fichier as $value) {
- if (in_array(substr($value,-4), $IMG_EXT)){
- $size=round(filesize($value) / 1024/1024, 5);
- echo "<tr><td><a href=$value><img src=$value width='10%' height='10%'></a></td><td> $size mo </td></tr>";
- }else {
- if(strstr(filetype($value), 'dir')) { // c'est un dossier
- echo "<tr><td><img src=monimagedossier.png> ";
- echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></td>';
- echo "<td></td></tr>";}
- else { //c'est un fichier
- $ssize=round(filesize($value) / 1024/1024, 5);
- echo filetype($file);
- echo "<tr><td><img src=monimagefichier.png> ";
- echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></td>';
- echo "<td>  $ssize mo</td></tr>";
- }
- }
- }
- }
- //exemple d'utilisation :
- listing('.'); //chemin du dossier
- ?>
|
Merci d'avance pour votre aide, car la j'en perd mes cheveux ^^ Message édité par mini56 le 20-06-2013 à 00:48:15
|