Explorateur de dossiers récursif

Soyez le premier à donner votre avis sur cette source.

Vue 16 409 fois - Téléchargée 1 982 fois

Description

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 / Exemple :


<?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>') ;
		// 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>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007

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.
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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

@ tchaOo°
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010

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
Messages postés
10
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
27 juin 2006

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)
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

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°
Afficher les 11 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.