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

Soyez le premier à donner votre avis sur cette source.

Vue 5 156 fois - Téléchargée 387 fois

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

Ajouter un commentaire

Commentaires

Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
21 septembre 2006

ah et je viens de remarquer que je n'ai pas non plus le répertoire parent (enfin il ne s'affiche pas ..)
Messages postés
13
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
21 septembre 2006

euh moi je veux bien mais ça marche pas ...
quand je clique sur un dossier ben y s'ouvre pas ...
au niveau des fichiers c'est nickel mais impossible d'ouvrir un autre dossier ...


Ah j'ai trouvé d'où ça vient, la variable $php_self est vide ... enfin elle est utilisée 2 fois mais elle n'est pas remplie (et comme elle affichait un message d'erreur, je l'ai initialisée à vide ...

sinon j'ai repris ton code pour le rendre plus lisible, je l'ai commenté un peu plus (même s'il était déjà bien commenté) et j'ai ajouté une initialisation à vide de toutes les variables qui affichaient des messages d'erreur ...
regarde sur http://les4dudus.free.fr/ et prend le fichier intitulé "phpcs_source_13178_ ..>"
Messages postés
245
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
21 juin 2004

Salut mon frère !
ça me fait plaisir de voir un si beau travail :) No mais franchement c'est pas mal !
bon courage ds la prog et surtout pour le brevet ... mais fais comme moi révise pas ça sert à rien !

@++
PoPo
http://popolinux.zapto.org
Messages postés
116
Date d'inscription
jeudi 12 juillet 2001
Statut
Membre
Dernière intervention
23 juin 2005

les icones normalement sont fournits avec le serveur apache
Messages postés
9
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
4 mai 2003

C'est génial ! Mais ou trouver les icones ?
Afficher les 8 commentaires

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.