begin process at 2012 05 27 20:08:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > EXPLORATEUR DE DOSSIERS RÉCURSIF

EXPLORATEUR DE DOSSIERS RÉCURSIF


 Information sur la source

Note :
5 / 10 - par 3 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :arborescence, dossier, fichier, explorateur, récursif Niveau :Débutant Date de création :31/05/2006 Vu / téléchargé :14 744 / 1 899

Auteur : nikoland

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Juste un explorateur de dossiers récursif que je viens de faire en vue de coder un "File manager" complet.
Le code me paraît assez propre, ceci dit, je pense avoir fait un peu de bricolage dans la balise [A AMELIORER].
Les deux instructions :
chdir($rep) ;
echo('<b>'.getcwd().'\\</b></br>') ;
ne sont pas indispensables mais c'est mieux si vous voulez avoir un chemin courant correct. Il faudrait reformater la variable $rep à chaque appel je pense. Je crois qu'il y a une fonction qui peut le faire mais je ne la trouve pas.

Essayez donc en commentant ces instructions pour comprendre ce dont je parle et faire cela d'une façon plus pro.

J'attend vos commentaires constructifs.

ps : Première source en php depuis que je fais du C, d'où la raison de la "propreté" (selon moi !)

Source

  • <?php
  • function liste_rep($rep)
  • {
  • if (is_dir($rep) == true)
  • {
  • // $rep est un répertoire valide
  • //[A AMELIORER]
  • // on ajoute l'antislash
  • if ($rep[strlen($rep)-1] != '\\')
  • {
  • $rep = $rep.'\\' ;
  • }
  • // on dit dans quel répertoire on se situe
  • chdir($rep) ;
  • echo('<b>'.getcwd().'\\</b></br>') ;
  • // [/A AMELIORER]
  • if (($pt_rep = opendir($rep)) != false)
  • {
  • // $rep a été ouvert
  • // scan des répertoires
  • while (($fichier = readdir($pt_rep)) != false)
  • {
  • // on lit le fichier courant
  • if ($fichier != '.')
  • // on ignore le répertoire courant
  • {
  • if (is_dir($rep.$fichier) == true)
  • {
  • echo('+<a href="index.php?chemin='.$rep.$fichier.'\\">'.$fichier.'</a></br>') ;
  • }
  • }
  • }
  • // on retourne au premier fichier
  • rewinddir($pt_rep) ;
  • // scan des fichiers
  • while (($fichier = readdir($pt_rep)) != false)
  • {
  • // on lit le fichier courant
  • if (is_dir($rep.$fichier) == false)
  • {
  • echo('-'.$fichier.'</br>') ;
  • }
  • }
  • // on ferme le répertoire qui a été ouvert
  • closedir($pt_rep) ;
  • }
  • }
  • }
  • ?>
  • <html>
  • <head>
  • <title>Explorateur de dossiers récursif</title>
  • </head>
  • <body>
  • <?php
  • if (isset($_GET['chemin']) == false)
  • {
  • $dossier = 'c:\\Program Files\\' ;
  • }
  • else
  • {
  • $dossier = $_GET['chemin'] ;
  • }
  • liste_rep($dossier) ;
  • ?>
  • </body>
  • </html>
<?php


function liste_rep($rep)
{
	if (is_dir($rep) == true)
	{
		// $rep est un répertoire valide
		
		//[A AMELIORER]
		// on ajoute l'antislash
		if ($rep[strlen($rep)-1] !=  '\\')
		{
			$rep = $rep.'\\' ;
		}
		
		// on dit dans quel répertoire on se situe
		chdir($rep) ;
		echo('<b>'.getcwd().'\\</b></br>') ;
		// [/A AMELIORER]
		
		if (($pt_rep = opendir($rep)) != false)
		{
			// $rep a été ouvert
			
			// scan des répertoires
			while (($fichier = readdir($pt_rep)) != false)
			{
				// on lit le fichier courant
				
				if ($fichier != '.')
				// on ignore le répertoire courant
				{
					if (is_dir($rep.$fichier) == true)
					{
						echo('+<a href="index.php?chemin='.$rep.$fichier.'\\">'.$fichier.'</a></br>') ;
					}
				}
			}
			
			// on retourne au premier fichier
			rewinddir($pt_rep) ;
			
			// scan des fichiers
			while (($fichier = readdir($pt_rep)) != false)
			{
				// on lit le fichier courant
				
				if (is_dir($rep.$fichier) == false)
				{
					echo('-'.$fichier.'</br>') ;
				}
			}
			
			// on ferme le répertoire qui a été ouvert
			closedir($pt_rep) ;
		}
	}
}

  
?>


<html>
<head>
	<title>Explorateur de dossiers récursif</title>
</head>
<body>
	
	
	<?php
		if (isset($_GET['chemin']) == false)
		{
			$dossier = 'c:\\Program Files\\' ;
		}
		else
		{
			$dossier = $_GET['chemin'] ;
		}
		
		liste_rep($dossier) ;
	?>
	
	
</body>
</html>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture EXPLORATEUREUREKA (GESTIONNAIRE COMPLET GRAPHIQUE DE FICHIER... par thematrix01
EFFACER DOSSIERS ET FICHIERS RÉCALCITRANTS par Stephane33
Source avec une capture LISTER LES DOSSIERS, SOUS-DOSSIERS ET NOMBRE DE FICHIERS par neo2k2
Source avec Zip EXPLORATEUR DE SITE WEB EN PHP 5 UNIQUEMENT par guill76
Source avec Zip PHPEXPLORER 2.00 BY DOTWIZARD512 par wizard512

Commentaires et avis

Commentaire de nikoland le 31/05/2006 22:52:25

J'en rajoute une couche, ça résoud le problème de l'url à rallonge mais ça fait plus que bricolage !

Il faut remplacer les deux instructions dont je parlais par :
chdir($rep) ;
$rep = getcwd().'\\' ;
echo('<b>'.getcwd().'\\</b></br>') ;

(Oui, j'aurai pu simplement dire de rajouter une instruction entre les deux...)

Commentaire de kankrelune le 01/06/2006 16:48:04

Salut...

C'est plutot bien... .. . :o)

Tu peux faire...

if (is_dir($rep))

à le place de...

if (is_dir($rep) == true)

is_dir renvoyant toujours true ou false pas besoin de comparason typée (===)... pareil pour...

if (($pt_rep = opendir($rep)) != false)

if (!$pt_rep = opendir($rep))

suffit... mais c'est pas bien grave ça ne change rien...

Par contre pour les deux boucles mieux vaut faire une comparaison typée...

while (false !== ($fichier = readdir($pt_rep)))

remplacer...

if ($rep[strlen($rep)-1] != '\\')
{
   $rep = $rep.'\\' ;
}

Par

if(substr($rep,-1) != DIRECTORY_SEPARATOR)
    $rep .= DIRECTORY_SEPARATOR;

remplacer...

if ($fichier != '.')
// on ignore le répertoire courant
{
     if (is_dir($rep.$fichier) == true)
     {

Par...

if ($fichier != '.' && $fichier != '..' && is_dir($rep.$fichier))
{


Plutot que de faire deux boucles tu peux utiliser la récursivité...

while (false !== ($fichier = readdir($pt_rep)))
{
   if ($fichier != '.' && $fichier != '..')
   {
      if(is_dir($rep.$fichier))
      {
        echo '+ <a href="index.php?chemin='.$rep.$fichier.DIRECTORY_SEPARATOR.'">'.$fichier.'</a><br />';  
        liste_rep($rep.$fichier);
      }
      else echo '-'.$fichier.'<br />';
   }
}

Voili voilou... .. .

@ tchaOo°

Commentaire de nikoland le 01/06/2006 16:53:14

Je te remercie pour tes conseils.

En ce qui concerne les tests genre "==true", je suis au courant, je changerai ceci plus tard pour que ce soit plus propre. Je les ai mis car j'ai changé plusieurs fois les conditions...

Je suis actuellement en train de faire un affichage des résultats dans un tableau xhtml et je suis assez fier du résultat. Si ça intéresse certains, je pourrais également le poster (en prenant soin de l'adapter avec les conseils de kankrelune).

Commentaire de kankrelune le 01/06/2006 17:40:03

La remarque sur le "== true" c'est plus du détail... le résultat est le même c'est juste que ça fait du code en moins à taper... lol... .. . ;o)

@ tchaOo°

Commentaire de nikoland le 01/06/2006 17:51:43

non mais moi je préfère aussi sans les "==true"...
j'aime bien avoir tout mes codes formatés de la même façon, donc je les retirerai après.

Commentaire de nikoland le 01/06/2006 20:52:36

je viens de me rendre compte d'une connerie, ce code n'est pas RECURSIF ! (j'ai fait ce code en même temps qu'un listeur complet de répertoire et sous-répertoires récursif...)

Je fais donc mon mea culpa.

Commentaire de kankrelune le 01/06/2006 21:20:38

Bah non... c'est pour ça que je t'ais que tu pouvais utiliser la récursivitée pour aléger le code... .. . ;o)

@ tchaOo°

Commentaire de theroman le 27/06/2006 11:12:22

salut j'ai voulut te pique ton code et le transformaer en album photo mais il marchais pas cher mon hebergeur

je l'ai donc un peut plus bidouiller. je sais po ce que vous en pensé a vous de me le dire

mais il marche nickel cher moi


  
        if (isset($_GET['dir']) == false)
        {
            
    $rep=getcwd();
            

}
        else
        {
            $rep = $_GET['dir'] ;
        }

       $rep = str_replace("\\", "/", $rep);
$repv=$rep;
$g=0;
while(opendir($repv)==false){
if($g==0){
$pDir = pathinfo($rep);
}
else{
$pDir = pathinfo($parentDir);
}
$parentDir = $pDir["dirname"];
$repva = str_replace("$parentDir",' ',$rep);
$repv=trim($repva);
$repv='www.adresse du site.eu/'.$repv;
$g++;
}
        

        

        
        if (($pt_rep = opendir($repv)) != false)

Commentaire de kiki2sirom le 27/06/2006 14:25:34

Bonjour,

kankrelune dans ton 1er post :

"remplacer : if (($pt_rep = opendir($rep)) != false)
par : if (!$pt_rep = opendir($rep))"

ce serait pas plutôt : à remplacer par :
if ($pt_rep = opendir($rep))??

A++
kiki

Commentaire de kankrelune le 27/06/2006 15:40:48

Effectivement kiki2sirom... c'est parce que j'ais l'habitude de traiter l'erreur en premier... .. . ;o)

@ tchaOo°

Commentaire de kurt67 le 06/08/2006 16:51:45

Si ça peut t'aider jette un coup d'oeil à ma source: http://zebigbrozer.free.fr/nav/
Ca t'éviterais de refaire du déjà fait en te basant sur ma source.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

HELP EXPLORATEUR DE DOSSIER/FICHIER [ par abdelmetz ] Bonjour a tous..Voila j'ai ecris un explorateur de dossier et fichier en php avec un serveur apache et il marche nikel en local cad losque je scanne l easyphp aurait des lacunes ? [ par Teclis01 ] Voila je viens exposer mon petit probleme ...je pensais faire un petit explorateur de fichier pour mon site donc je fais chauffer easyphp et la le dra lister un dossier (différence entre fichier et dossier) [ par mierkool ] Bonjour, je voudrais savoir comment fait on pour différencier un dossier d'un fichier quand on liste le contenu d'un dossier :car dans ma liste, le do adresse de fichier [ par Adrass ] bonjour,j'ai un petite problèmej' ai fait un script qui parcour toute l'arboressence pour trouver des fichier a partir d' un certain de dossier (par a problemme pour effacer un dossier ds un back office [ par tonyok75 ] Bonjour à tous voila c'est mon premier poste et je suis débutant en php.J'ai une partie administration dans la qu'elle on peut créer des répertoires j lien vers tous les fichier d'un dissier [ par kelm_by ] salut tous le monde,j'ai fait ce code pour metre un lien vers tous les fichier d'un dosier mais ca marche pas aider moi svp&lt;?$folder = "./";$dossie Apostrophe dans nom fichier et dossier [ par JMKPROD ] Je réalise un gestionnaire de mp3 couplé à une base mysql pour gérer mes milliers de mp3. Grace aux nombreux bouts de code que j'ai pioché sur phpcs.c opendir [ par jphilippev ] bonjour j'ai pris un code du manuel php pour ouvrir un dossier (opendir)et en début de boucle il me renvoirfichier : .fichier : ..</font Gestion fichier des utilisateurs [ par nemo_1 ] Bonjour deja a toute la comunaute,Je m'excuse d'avance si la question a ete deja pose.Je l'explique il parait tres simple mais meme avec le principe j Probleme d'affichage du resultat d'un scan sur 2 colonnes [ par kilian67 ] Salut, j'ai un souci pour l'affichage des résultats d'un script que je souhaiterai affiché sur 2 voir 3 colonnes. Voici le script en question il fon


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales