Explorateur ftp sur 2 niveaux

Contenu du snippet

Une petit source qui peut aider certains à comprendre l'utilisation des dossiers.

Moi-même je viens de commencer ce soir et voilà mon petit entraînement. =P

Cette source permet de lister les fichiers et dossiers sur plusieurs niveaux (au moins 2) et de pouvoir fournir un aperçu des fichiers (visualisation de l'image et/ou lien vers le fichier).

Aperçu ici: http://www.g-web.fr.nf/upload/membre/

Source / Exemple :


<?php
	/*
	G FTP
	Par viki53 (http://viki53.g-web.fr.nf/)
	Source libre d'utilisation
	
	Un petit lien serait tout de mêmele bienvenu =D 
	
	Les variables $config['site_url'] et $config['site_racine'] sont à déclarer et correspondent respectivement à l'URL absolue du site (http://www.g-web.fr.nf/) et le chemin depuis la racine du serveur (/localhost/site/).

  • /
$nb_fichiers = 0; // On initialise les compteurs $nb_dossiers = 0; $file_types_img = array('jpg','gif','png','bmp','jpeg', 'tif'); // On déclare quelques types de fichiers (ici les images) $file_types_zip = array('zip','rar'); // Idem mais pour les archives if( $_GET['folder'] != NULL ) { $folder = htmlentities($_GET['folder']); } if( $_GET['subdir'] != NULL ) { $subdir = htmlentities($_GET['subdir']); } if( $_GET['file'] != NULL ) { $file = htmlentities($_GET['file']); $filename = explode('.', $file); $filenameext = strtolower($filename[count($filename)-1]); // On récupère l'extension du fichier if($folder != NULL) $doss = $folder.'/'; if($subdir != NULL) $doss = $doss.$subdir.'/'; if( is_file($doss.$file) ) { if( in_array($filenameext, $file_types_img) ) // Si le fichier est une image { echo ' <p class="t_align_centre"> <a href="'.$doss.$file.'" title="Voir l\'image en grand"><img src="'.$doss.$file.'" alt="'.$file.'" class="avatar" /></a> </p> '; } elseif( in_array($filenameext, $file_types_zip) ) // Si c'est une archive { echo ' <p class="t_align_centre"> Télécharger l\'archive : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" /></a> </p> '; } else // Sinon { echo ' <p class="t_align_centre"> Extension inconnue ('.strtoupper($filenameext).') : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" title="Télécharger le fichier" /></a> </p> '; } echo ' <p class="t_align_centre"> <a href="'.$_SERVER['HTTP_REFERER'].'"> <img src="/img/precedent.png" alt="Retour" /> </a> <a href="?"> <img src="/img/sommaire.png" alt="Sommaire" /> </a> <a href="'.$_SERVER['HTTP_REFERER'].'"> <img src="/img/suivant.png" alt="Suite" /> </a> </p> '; // Quelques petits liens. :p } else // Si le fichier n'existe pas { echo '<p class="message_erreur">Ce fichier n\'existe pas.</p> <p class="message_info">Vous aviez demandé <a href="?folder='.$folder.'" class="color_bleugris">'.$config['site_url'].'upload/membre/'.$doss.$file.'</a></p>'; } } else // Si $_GET['file'] n'est pas donné { // Si on veut parcourir le serveur echo '<p>Dossier recherché : <span class="color_bleugris">'.$config['site_url'].'upload/membre/'; if($folder != NULL) echo $folder.'/'; if($subdir != NULL) echo $subdir.'/'; echo'</span>.</p>'; if($folder != NULL) $doss = $folder.'/'; if($subdir != NULL) $doss = $doss.$subdir.'/'; if( is_dir($config['site_racine'].'upload/membre/'.$doss) ) // Si le dossier existe { $dossier = opendir($config['site_racine'].'upload/membre/'.$doss); echo ' <ul> '; while( ($fichier = readdir($dossier)) != FALSE ) { if( is_file($doss.$fichier) AND !is_dir($doss.$fichier) AND $fichier != 'index.php' ) { $nb_fichiers ++; //On incrémente le compteur de un $fichier_name = explode('.', $fichier); $fichier_ext = strtolower($fichier_name[count($fichier_name)-1]); echo ' <li>'; if( in_array($fichier_ext, $file_types_img) ) // Si c'est une image { echo '<img src="/img/icones/image.gif" alt="" />'; } elseif( in_array($fichier_ext, $file_types_zip) ) // Si c'est une archive { echo '<img src="/img/icones/compress.png" alt="" />'; } else // Sinon { echo '<img src="/img/icones/cursor.png" alt="" />'; } // Le lien, qui varie selon les données existantes if( $subdir != NULL ) { echo' <a href="?folder='.$folder.'&amp;subdir='.$subdir.'&amp;file='.$fichier.'"> /'.$fichier.' </a> '; } elseif( $folder != NULL ) { echo' <a href="?folder='.$folder.'&amp;file='.$fichier.'"> /'.$fichier.' </a> '; } else { echo' <a href="?file='.$fichier.'"> /'.$fichier.' </a> '; } echo ' </li>'; } elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier == '..' ) { // Si c'est un dossier supérieur if($folder != NULL AND $subdir != NULL ) { echo ' <li> <a href="?folder='.$folder.'"> <img src="/img/precedent.png" alt="<=" /> </a> </li> '; } elseif($folder != NULL AND $subdir == NULL ) { echo ' <li> <a href="?"> <img src="/img/precedent.png" alt="<=" /> </a> </li> '; } } elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier != '.' ) { // Si c'est un sous-dossier $nb_dossiers ++; // On incrémente le beau compteur // Un petit lien if( $folder != NULL ) { echo ' <li> <a href="?folder='.$folder.'&amp;subdir='.$fichier.'"> <img src="/img/icones/folder.gif" alt="=>" /> /'.$fichier.'/ </a> </li> '; } else { echo ' <li> <a href="?folder='.$fichier.'"> <img src="/img/icones/folder.gif" alt="=>" /> /'.$fichier.'/ </a> </li> '; } } } echo ' </ul> '; // On affiche les compteurs echo ' <p class="message_info">Il y a <strong>'.$nb_fichiers.'</strong> fichier(s) et <strong>'.$nb_dossiers.'</strong> sous-dossier(s) dans ce dossier.</p> '; closedir($dossier); // On ferme le dossier } else // Si le dossier demandé n'existe pas { echo '<p class="message_erreur">Le dossier n\'a pas pu être ouvert.</p>'; } } ?>

Conclusion :


Je ne l'ai pas vraiment développée mais j'ai ajouté quelques commentaires pour vous aider.

Je précise que je n'ai pas effectué les changements pour qu'elle soit adaptable à tous les sites.

Bientôt je la transformerai en fonction. ;)

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.

Du même auteur (viki53)