Explorer un repertoire en qques lignes [tutoriel]

Contenu du snippet

voici un code court, commenté, sans blabla ou code superflux.
le but n'est pas de realiser une application complete, mais de comprendre comment explorer les repertoires simplement.

Source / Exemple :


<?php
// on definie la fonction listfile() avec en argument le dossier a explorer
function listfile($from) {
$dossier=opendir($from);  // on ouvre le dossier
while ($fichier = readdir($dossier)) {  // boucle qui s'execute tant qu'on est pas a la fin de la liste de fichier
$l = array('.', '..','index.php'); // pour pas que la page en cours ou les dossier .. ou . apparaissent, on les met dans un array...
	if (!in_array( $fichier, $l)){ // ... et on compare.
		$_file_ = $from."/".$fichier; // variable $_file_ = chemin du fichier trouvé, relatif a la page en cours.
		if (is_dir($_file_)){  // si ce "fichier" est un dossier
		print("dir :: <a href=$PHP_SELF?d=$_file_>$_file_</a><br>"); // on crée un lien permettant de l'explorer (passage en variable, voir plus bas)
		} else {
		print("file :: <a href=$_file_>$_file_</a><br>"); // sinon on fait un lien vers ce fichier.
		}
	}
}
}
if (isset($d)) { // si la variable $d existe, on explore le dossier $d
listfile($d);
} else {
listfile("."); // sinon on explore le dossier courrant.
}
?>

Conclusion :


pour ceux qui ne savent pas ::
. = dossier en cours
.. = dossier parent
-----------------------------
si vous mettez ça dans une page qui n'est pas index.php, alors changez la ligne $l = array('.', '..','index.php');
si vous voulez cacher des fichier, ajouter comme ceci ::
$l = array('.', '..','index.php','fichiercaché.ext','.httaccess','admin');
les noms de fichier ou de dossier sont confondus.

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.