Web eplorer v2, une interface de navigation comme celle d'apache (listing dossier/fichier, et navigation)

Description

Salut tt le monde !
Vous aussi vous en avez marre de la liste Apache des dossier et fichier ?
Et bien voila la meme chose, mais avec qq petite amelioration
(Dossier avant les fichiers,
Navigation dans la meme et unique page,
interface en FR,
et nom de fichier plus longs.)
de plus grâce a cette source vous pourez facillement personnaliser cette interface a votre gout,
Oufff, enfin la v2 qui est un copi conforme du script d'apache :

Source / Exemple :


<?php

//Crée par OverDarck (DarckOver@Yahoo.fr) le 08/03/2003

function getmicrotime() {//pour le calcul du tps d'execution de la page
        // Cette fonction récuperre l'heure en microsecondes
        list($usec, $sec) = explode(" ", microtime()); 
        return ($usec + $sec); 
}
function SConv($oct){//convertion des tailes de fichiers
        if ($oct < 1024){
          $tmp = number_format($oct);
        }elseif ($oct > 1024 && $oct < bcpow(1024,2)){
          $tmp = number_format($oct / 1024)."k";
        }elseif ($oct > bcpow(1024,2) && $oct < bcpow(1024,3)){
          $tmp = number_format($oct / bcpow(1024,2))."M";
        }elseif ($oct > bcpow(1024,3) && $oct < bcpow(1024,4)){
          $tmp = number_format($oct / bcpow(1024,3))."G";
        }elseif ($oct > bcpow(1024,4) && $oct < bcpow(1024,5)){
          $tmp = number_format($oct / bcpow(1024,4))."T";
        }
        return $tmp;
}
function GetImg($filesrc){//renvoi un icone selon l'extension du fichier (22 extension reconues)
        $ext=pathinfo($filesrc);
        $ext=$ext["extension"];
        if ($ext=="exe"){
          $tmp = "/icons/binary.gif";     //fichier "binaires"
        }elseif ($ext=="zip"){
          $tmp = "/icons/compressed.gif"; //fichier "compressés"
        }elseif ($ext=="htm"|$ext=="html"|$ext=="txt"|$ext=="css"|$ext=="rtf"|$ext=="xml"){
          $tmp = "/icons/text.gif";       //fichier "texte"
        }elseif ($ext=="mp3"|$ext=="wav"|$ext=="mid"|$ext=="rm"){
          $tmp = "/icons/sound2.gif";     //fichier "son"
        }elseif ($ext=="avi"|$ext=="mpg"|$ext=="mpeg"|$ext=="mov"){
          $tmp = "/icons/movie.gif";      //fichier "vidéo"
        }elseif ($ext=="gif"|$ext=="jpg"|$ext=="jpeg"|$ext=="bmp"|$ext=="png"){
          $tmp = "/icons/image2.gif";     //fichier "image"
        }elseif ($ext=="pdf"){
          $tmp = "/icons/layout.gif";     //fichier pdf
        }else{
          $tmp = "/icons/unknown.gif";    //fichier inconu
        }
        return $tmp;
}
$starttime = getmicrotime();//temp de départ (pour calcul du tps d'execution)
if($rep==""){$rep=".";};// au cas ou on vien d'ouvrir la page pour explorer le répertoire courant
if(substr($rep,strlen($rep)-1,1)!="/"){$rep=$rep."/";};//rajoute le / a la fin
$rep=str_replace("\\","/", $rep);//remplace les eventuels \ en /
$rep=str_replace("//","/", $rep);//dédouble les eventuels // (sa donne /)
if ($dir = @opendir($rep)) {
  while($file = readdir($dir)) {//liste des fichier et dossier
    if($file!="." && $file!=".."){//pour eviter d'avoir les "." et ".."
      if(strlen($file)>30){
        $FileN=substr($file, 0, 30)."..></a> ";//coupe les noms de fichiers a 30 char si ils sont plus longs que 30
      }else{
        $FileN=str_pad($file."</A> ", 38," ");//rempli d'espaces ceux qui sont trop courts
      }
      $loc=$rep.$file;//chemin complet
      $FDT=str_pad(str_pad(date("j",filemtime($loc)),2,"0", STR_PAD_LEFT).date("-M-y h:m",filemtime($loc)),20);//date et heure des fichiers
      $FS=str_pad(SConv(filesize($loc)), 4, " ", STR_PAD_LEFT);//taille du fichier (d'une largeure de 4 char)

      if(is_dir($loc)){//si dossier ou si fichier
        $d=$d+1;//compte du nombre de dossiers
        $buf=$buf."<IMG SRC=\"/icons/folder.gif\" ALT=\"[DOSSIER]\"> <A HREF=\"".$PHP_SELF."?rep=".$loc."\">".$FileN.$FDT."   -\n";
      }else{
        $f=$f+1;//compte du nombre de fichiers
        $img=GetImg($loc);
        $buff=$buff."<IMG SRC=\"".$img."\" ALT=\"[FICHIER]\"> <A HREF=\"".$loc."\">".$FileN.$FDT.$FS."\n";//on met en buff pour les afficher plus tard, comme sa on a tout les dossiers avant
      }
    }
  }
  closedir($dir);
}else{$buf=("<br>L'adresse spécifiée n'est pas valide");};
//on affiche le tout
print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<HTML>\n <HEAD>\n  <TITLE>WebExplorer : ".$rep."</TITLE>\n </HEAD>\n<BODY>\n<H1>Index of ".$rep." <FONT SIZE=1>(".str_pad($d,1,"0")." dossiers et ".str_pad($f,1,"0")." fichiers)</FONT></H1>\n<PRE><IMG SRC=\"/icons/blank.gif\"> Name                              Last modified       Size\n<HR>\n");//en tête de la page
  if($rep!="/" && $rep!="" && $rep!="./"){//sa c'est pour le "Répertoire parent
    $Parent=str_replace("\\","/",dirname($rep));
    print("<IMG SRC=\"/icons/folder.gif\" ALT=\"[DOSSIER]\"> <A HREF=\"".$PHP_SELF."?rep=".$Parent."\">Répertoire parent<a>                 ".str_pad(str_pad(date("j",filemtime($loc)),2,"0", STR_PAD_LEFT).date("-M-y h:m",filemtime(dirname($rep))),20)."   -\n");
  }
print($buf);//les dossiers
print($buff);//les fichiers
$exectime = round((getmicrotime() - $starttime) * 100) / 100;//calcul de la difference tps de départ et tps actuel pour obtenir le tps d'execution de la page
print("</PRE><HR>\n<FONT SIZE=1><A HREF=\"mailto:DarckOver@yahoo.fr\">Ecrire au WebMaster</A>, cette liste à été générée par WebExplorer (Crée en PHP par OverDarck le 08/03/2003) en ".$exectime." secondes. (<A HREF=\"we_src.php\" TARGET=\"_NEW\">Source</A>)</FONT>\n</BODY>\n</HTML>");//pied de page
?>

Conclusion :


Pour les faignants, j'ai mis un zip...
de plus que j'ai fait une page qui permet d'afficher la sources de cette page pour vos visiteurs...

Aucun bugs connus, bientot j'integrerai un system de tri par nom, type et taille...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.