[PHP] Besoin d'aide pour un exploreur de dossier FTP

Besoin d'aide pour un exploreur de dossier FTP [PHP] - PHP - Programmation

Marsh Posté le 09-11-2002 à 13:59:10    

Salut tout le monde :)
 
Voila j'ai vu ça sur un site : http://membres.lycos.fr/elmuchacho/?path=.
 
Et j'aimerais trouver la même interface de naviguation des dossiers (avec icône etc...).
 
Si quelqu'un pouvais m'expliquer comment faire sachant que je débute en php :/
Ca m'aiderais énormément ;)
 
Merci d'avance !


Message édité par Hornet le 09-11-2002 à 14:00:53
Reply

Marsh Posté le 09-11-2002 à 13:59:10   

Reply

Marsh Posté le 10-11-2002 à 03:32:07    

D'abord, il faut que tu saches qu'Apache est trés bien capable de lister le contenu des répertoires.
 
Mais j'avais un peu de temps ; j'ai fait un petit code du genre de celui qui doit faire tourner le site que tu donnes en exemple. Comme tu dis être débutant j'ai mi beaucoup de commentaires.
 
Le nom du répertoire est transmis, comme sur le site, par une variable ($patch) dans l'url :

Code :
  1. if ($dir = @opendir($patch)) { // D'abord, on ouvre le répertoire uniquement s'il existe.
  2.         while($file = readdir($dir)) { // Liste le contenu du répertoire autant de fois qu'il le faut.
  3.                 if(is_dir("$patch/$file" )) echo "[DIR]"; // Si le fichier est un répertoire on affiche [DIR] (ou une image, une icone...).
  4.                 else { // Si ce n'est pas un répertoire :
  5.                         $ext = ereg_replace(".*\.(.*)", "\\1", "$file" ); // On place l'extension du fichier dans $ext.
  6.                         switch($ext){ // On regarde ce que contiens $ext.
  7.                                 case 'jpeg': echo '[JPG]'; break; // Si $ext contien 'jpeg' on affiche [JPG].
  8.                                 case 'jpg' : echo '[JPG]'; break;
  9.                                 case 'png' : echo '[PNG]'; break;
  10.                                 case 'html': echo '[HTM]'; break;
  11.                                 default    : echo '[FIC]'; // par défaut on affiche [FIC].
  12.                         }
  13.                         $size = ' ('.round((filesize("$patch/$file" ) / 1024), 1).' ko)'; /* Ici on obtient la taille du fichier avec filesize, on divise par 1024 pour obtenir la taille en Ko et on arrondi avec round. Puis on met des parenthèses autour du résultat, et on place le tout dans la variable $size (en une ligne !).*/
  14.                 }
  15.                 echo " <a href='/&patch=$patch/$file'>$file</a>$size<br>\n"; /* Enfin, on affiche le lien amenant vers le fichier, suivit de $size pour afficher la taille.*/
  16.         }
  17.         closedir($dir); // Ferme le répertoire.
  18. } else echo "Ce répertoire n'existe pas"; // En cas d'erreur.


 
Ça devrait afficher quelque chose du genre :

Code :
  1. [DIR] .
  2. [DIR] ..
  3. [DIR] .xvpics
  4. [PNG] html.2.png (58.8 ko)
  5. [PNG] html.png (1.2 ko)
  6. [FIC] html.xcf (5.3 ko)
  7. [PNG] pdf.png (0.4 ko)
  8. [PNG] txt.png (0.6 ko)


 
En espérant que ça te serves.
a+


Message édité par kalex le 10-11-2002 à 03:40:29
Reply

Marsh Posté le 10-11-2002 à 10:55:38    

Je vais essayer de suite, je te tiens au jus ;)
 
Merci ! :jap:

Reply

Marsh Posté le 10-11-2002 à 14:04:46    

Ce fichier $patch, je dois le renommer avec quelle extension ?

Reply

Marsh Posté le 10-11-2002 à 15:19:32    

Non. Un fichier (peu importe le nom) doit contenir le code que je t'ai donné, et avoir pour extension ".php".
$patch c'est la variable qui est transmise dans l'url. Admettons que tu mettes le code dans un fichier "dir.php", que tu le places à la racine de ton site, tu y accéderas par http://localhost/dir.php?patch=. .
$patch contiendra "." (un point), c'est à dire le répertoire courant (ici, la racine de ton site).
 
Tien, je modifie les liens pour qu'ils pointent vers dir.php :

Code :
  1. if ($dir = @opendir($patch)) {
  2.             while($file = readdir($dir)) {
  3.                       if(is_dir("$patch/$file" )) echo "[DIR]";
  4.                       else {
  5.                                 $ext = ereg_replace(".*\.(.*)", "\\1", "$file" );
  6.        
  7.                                 switch($ext){
  8.                                           case 'jpeg': echo '[JPG]'; break;
  9.                                           case 'jpg' : echo '[JPG]'; break;
  10.                                           case 'png' : echo '[PNG]'; break;
  11.                                           case 'html': echo '[HTM]'; break;
  12.                                           default    : echo '[FIC]';
  13.                                 }
  14.                                 $size = ' ('.round((filesize("$patch/$file" ) / 1024), 1).' ko)';
  15.                       }
  16.                       echo " <a href='/dir.php?patch=$patch/$file'>$file</a>$size<br>\n";// Le lien pointe maintenant sur dir.php à la racine de ton site.
  17.             }
  18.             closedir($dir);
  19. } else echo "Ce répertoire n'existe pas";


Message édité par kalex le 10-11-2002 à 15:21:13
Reply

Marsh Posté le 30-11-2002 à 02:22:08    

pas mal comme petit script, mais j'ai du changer la ligne ci-dessous pour que les liens vers les fichiers fonctionnent
 
echo " <a href='./$file'>$file</a>$size<br>\n";
 
en tout cas merci pour ça il est vraiment bien ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed