par
sadeq » 03 mai 2005, 15:15
Reprise et développement du code de
Spetznaz, et ça donne un véritable explorateur de fichiers qui fonctionne en mode local.
<?php
//Ce programme est un explorateur de fichiers (mode local)
$tableau = array();
// Fonctions
//Pour l'extension d'un fichier
function getExtension($entrée)
{
$parties = explode(".", getNom($entrée));
return isset($parties[1])?".$parties[1]":null;
}
//Pour le nom d'un fichier ou dossier
function getNom($entrée)
{
$entrée = str_replace("\\","/",$entrée);
$parties = explode("/",$entrée);
if (count($parties)>0) return $parties[count($parties)-1]; else return $entrée;
}
//Pour la liste des dossiers parents d'une entrée
function getListeChemins($entrée)
{
$entrée = str_replace("\\","/",$entrée);
$parties = explode("/",$entrée);
for ($i=1; $i < count($parties); $i++)
$parties[$i] = $parties[$i-1]."/".$parties[$i];
return $parties;
}
//Pour le chemin complet d'une entrée
function getChemin($entrée)
{
$nom = getNom($entrée);
return str_replace($nom,"",$entrée);
}
//Pour classer le contenu (dossiers ou fichiers) par un ordre choisi
function trier($entrée, $ordre="ASC", $ignore_casse=true)
{
//tri classique : Echange
for ($i=0; $i < count($entrée)-1; $i++)
for ($j=$i+1; $j < count($entrée); $j++) {
//comparer et classer les noms
$nom1 = getNom($entrée[$i]);
$nom2 = getNom($entrée[$j]);
//Ignorer la casse
if ($ignore_casse) {$nom1 = strtoupper($nom1);$nom2 = strtoupper($nom2);}
//le tri (ordre croissant par défaut)
if ((strtoupper($ordre) != "DESC" & $nom1 > $nom2)
||(strtoupper($ordre) == "DESC" & $nom1 < $nom2))
{$temp = $entrée[$i]; $entrée[$i]=$entrée[$j]; $entrée[$j] = $temp; }
}
return $entrée;
}
//Récupérer des paramètres HTTP
$rep =isset($_GET["rep"])?$_GET["rep"]:"A:";
$ordre =isset($_GET["ordre"])?$_GET["ordre"]:"ASC";
//Le titre
echo "<table width=100%><legend><h3>Contenu de $rep</h3><hr></legend>
<tr><th align=left>Ordre: <A href='explorer.php?rep=$rep&ordre=ASC'>aA</A> <A href='explorer.php?rep=$rep&ordre=DESC'>Aa</A>";
//Historique des dossiers parcourus
$chemin = getListeChemins($rep);
if (isset($chemin) && count($chemin)>1){
echo "<th align=right>Dossiers parents :";
for ($i=0; $i<count($chemin)-1; $i++){
if ($i==count($chemin)-2) $style ="b"; else $style="i";
$index = $i+1;
echo "<th> <$style><A href='explorer.php?rep=$chemin[$i]&ordre=$ordre'>$index </A></$style>";
}
echo "</table>";
}
//Affichage d'un fichier demandé par un lien hTTP
if (is_file($rep) ) {
echo "<iframe src='$rep' width=100% height=100%></iframe>";
}
else {
//Exploration d'un dossier et affichage de son contenu
//Ouverture du dossier ou lecteur à explorer
$dossier = @opendir($rep);
if (isset($dossier) && $dossier != null) {
//Explorer le contenu du dossier ouvert
while ($entrée = readdir ($dossier))
{
//Une entrée peut être un fichier ou sous-dossier (ignorer la branche générique du parent)
if ($entrée != null && $entrée != "." && $entrée != ".."){
if (is_file("$rep/$entrée")){
//mémoriser le fichier trouvé
$fichiers[] = "$rep/$entrée";
}else
//mémoriser le dossier trouvé
$dossiers[] = "$rep/$entrée";
}
}
//Fermer le chemin exploré
closedir ($dossier);
//Appliquer le classement des dossiers ou fichiers trouvés (selon le paramètre $ordre)
if (isset($dossiers)) $dossiers = trier($dossiers,$ordre);
if (isset($fichiers)) $fichiers = trier($fichiers,$ordre);
}
//Affichage de la liste des dossiers et fichiers trouvés
$nbcol=3; //--- détermine le nombre de colonnes de l'affichage
echo "<table align=center width=100%><legend></legend>";
//Comptage des ressources
$nbDossiers= isset($dossiers)?count($dossiers):0;
$nbFichiers= isset($fichiers)?count($fichiers):0;
echo "<tr><th colspan=$nbcol align=left><font size=1>$nbDossiers dossier(s) et $nbFichiers fichier(s) </font>";
//Afficher les dossiers (icône dossier + le nom + un lien hTTP vers la ressource)
if (isset($dossiers))
for ($i=0; $i<count($dossiers); $i++)
{
if ($i%$nbcol==0) echo "<tr>";
//Réduire la taille du texte d'un nom > à 20 caractères
if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;
echo "<td><font size=$taille><A href='explorer.php?rep=$dossiers[$i]&ordre=$ordre' style='text-decoration:none'>
<img src='dossier.gif' align=center border=0 alt='$dossiers[$i]'> ".strtoupper(getNom($dossiers[$i]))."</img></A></font>";
}
//Afficher les fichiers (icône fichier + le nom + un lien hTTP vers la ressource)
if (isset($fichiers))
for ($i=0; $i<count($fichiers); $i++)
{
if ($i%$nbcol==0) echo "<tr>";
//Réduire la taille du texte d'un nom > à 20 caractères
if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;
echo "<td><font size=$taille><A href='explorer.php?rep=$fichiers[$i]&ordre=$ordre' style='text-decoration:none'>
<img src='fichier.gif' align=center border=0 alt='$fichiers[$i]'> ".getNom($fichiers[$i])."</img></A></font>";
}
echo "</table>";
} //Fin de l'explorartion du dossier et de l'affichage de son contenu
?>
Reprise et développement du code de [b]Spetznaz[/b], et ça donne un véritable explorateur de fichiers qui fonctionne en mode local.
[php]<?php
//Ce programme est un explorateur de fichiers (mode local)
$tableau = array();
// Fonctions
//Pour l'extension d'un fichier
function getExtension($entrée)
{
$parties = explode(".", getNom($entrée));
return isset($parties[1])?".$parties[1]":null;
}
//Pour le nom d'un fichier ou dossier
function getNom($entrée)
{
$entrée = str_replace("\\","/",$entrée);
$parties = explode("/",$entrée);
if (count($parties)>0) return $parties[count($parties)-1]; else return $entrée;
}
//Pour la liste des dossiers parents d'une entrée
function getListeChemins($entrée)
{
$entrée = str_replace("\\","/",$entrée);
$parties = explode("/",$entrée);
for ($i=1; $i < count($parties); $i++)
$parties[$i] = $parties[$i-1]."/".$parties[$i];
return $parties;
}
//Pour le chemin complet d'une entrée
function getChemin($entrée)
{
$nom = getNom($entrée);
return str_replace($nom,"",$entrée);
}
//Pour classer le contenu (dossiers ou fichiers) par un ordre choisi
function trier($entrée, $ordre="ASC", $ignore_casse=true)
{
//tri classique : Echange
for ($i=0; $i < count($entrée)-1; $i++)
for ($j=$i+1; $j < count($entrée); $j++) {
//comparer et classer les noms
$nom1 = getNom($entrée[$i]);
$nom2 = getNom($entrée[$j]);
//Ignorer la casse
if ($ignore_casse) {$nom1 = strtoupper($nom1);$nom2 = strtoupper($nom2);}
//le tri (ordre croissant par défaut)
if ((strtoupper($ordre) != "DESC" & $nom1 > $nom2)
||(strtoupper($ordre) == "DESC" & $nom1 < $nom2))
{$temp = $entrée[$i]; $entrée[$i]=$entrée[$j]; $entrée[$j] = $temp; }
}
return $entrée;
}
//Récupérer des paramètres HTTP
$rep =isset($_GET["rep"])?$_GET["rep"]:"A:";
$ordre =isset($_GET["ordre"])?$_GET["ordre"]:"ASC";
//Le titre
echo "<table width=100%><legend><h3>Contenu de $rep</h3><hr></legend>
<tr><th align=left>Ordre: <A href='explorer.php?rep=$rep&ordre=ASC'>aA</A> <A href='explorer.php?rep=$rep&ordre=DESC'>Aa</A>";
//Historique des dossiers parcourus
$chemin = getListeChemins($rep);
if (isset($chemin) && count($chemin)>1){
echo "<th align=right>Dossiers parents :";
for ($i=0; $i<count($chemin)-1; $i++){
if ($i==count($chemin)-2) $style ="b"; else $style="i";
$index = $i+1;
echo "<th> <$style><A href='explorer.php?rep=$chemin[$i]&ordre=$ordre'>$index </A></$style>";
}
echo "</table>";
}
//Affichage d'un fichier demandé par un lien hTTP
if (is_file($rep) ) {
echo "<iframe src='$rep' width=100% height=100%></iframe>";
}
else {
//Exploration d'un dossier et affichage de son contenu
//Ouverture du dossier ou lecteur à explorer
$dossier = @opendir($rep);
if (isset($dossier) && $dossier != null) {
//Explorer le contenu du dossier ouvert
while ($entrée = readdir ($dossier))
{
//Une entrée peut être un fichier ou sous-dossier (ignorer la branche générique du parent)
if ($entrée != null && $entrée != "." && $entrée != ".."){
if (is_file("$rep/$entrée")){
//mémoriser le fichier trouvé
$fichiers[] = "$rep/$entrée";
}else
//mémoriser le dossier trouvé
$dossiers[] = "$rep/$entrée";
}
}
//Fermer le chemin exploré
closedir ($dossier);
//Appliquer le classement des dossiers ou fichiers trouvés (selon le paramètre $ordre)
if (isset($dossiers)) $dossiers = trier($dossiers,$ordre);
if (isset($fichiers)) $fichiers = trier($fichiers,$ordre);
}
//Affichage de la liste des dossiers et fichiers trouvés
$nbcol=3; //--- détermine le nombre de colonnes de l'affichage
echo "<table align=center width=100%><legend></legend>";
//Comptage des ressources
$nbDossiers= isset($dossiers)?count($dossiers):0;
$nbFichiers= isset($fichiers)?count($fichiers):0;
echo "<tr><th colspan=$nbcol align=left><font size=1>$nbDossiers dossier(s) et $nbFichiers fichier(s) </font>";
//Afficher les dossiers (icône dossier + le nom + un lien hTTP vers la ressource)
if (isset($dossiers))
for ($i=0; $i<count($dossiers); $i++)
{
if ($i%$nbcol==0) echo "<tr>";
//Réduire la taille du texte d'un nom > à 20 caractères
if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;
echo "<td><font size=$taille><A href='explorer.php?rep=$dossiers[$i]&ordre=$ordre' style='text-decoration:none'>
<img src='dossier.gif' align=center border=0 alt='$dossiers[$i]'> ".strtoupper(getNom($dossiers[$i]))."</img></A></font>";
}
//Afficher les fichiers (icône fichier + le nom + un lien hTTP vers la ressource)
if (isset($fichiers))
for ($i=0; $i<count($fichiers); $i++)
{
if ($i%$nbcol==0) echo "<tr>";
//Réduire la taille du texte d'un nom > à 20 caractères
if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;
echo "<td><font size=$taille><A href='explorer.php?rep=$fichiers[$i]&ordre=$ordre' style='text-decoration:none'>
<img src='fichier.gif' align=center border=0 alt='$fichiers[$i]'> ".getNom($fichiers[$i])."</img></A></font>";
}
echo "</table>";
} //Fin de l'explorartion du dossier et de l'affichage de son contenu
?> [/php]