[PHP] tester si c'est un dossier

tester si c'est un dossier [PHP] - PHP - Programmation

Marsh Posté le 21-07-2005 à 10:47:07    

Bonjour  :hello:  
 
je suis en train de faire un ptit prog qui scan mes comptes ftp et fait un affichage type windows
 
j'ouvre un compte
je repertorie ce qu'il y a dedans et si c'est un dossier je repertourie ce qu'il a dedans etc...
 
mais le test "est un dossier?" ne marche pas  :heink: J'ai utilisé is_dir() c'est pas bon ?
 
voici mon code
 

Code :
  1. <?php
  2. $ftp_server="ftpperso.free.fr";
  3. $ftp_user_name="*****";
  4. $ftp_user_pass="*********";
  5. // Création de la connexion
  6. $conn_id = ftp_connect("$ftp_server" );
  7. // Authentification avec nom de compte et mot de passe
  8. $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass" );
  9. // Vérification de la connexion
  10. if ((!$conn_id) || (!$login_result)) {
  11.         echo "La connexion FTP a échoué!";
  12.         echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
  13.         die;
  14.     } else {
  15.         echo "Connecté à $ftp_server, avec $ftp_user_name";
  16.     }
  17. //dossier courant
  18. $racine= ftp_pwd($conn_id);
  19. liste_dossier($racine);
  20. echo "<br>";
  21. // Fermeture de la connexion FTP.
  22. ftp_quit($conn_id);
  23. echo "<br>Fermeture de la connexion à $ftp_server, avec $ftp_user_name";
  24. function liste_dossier($d){
  25. global $conn_id;
  26. //liste le dossier
  27. $liste = ftp_nlist($conn_id, $d);
  28. //echo "<br>Taille : ".count($liste);
  29. for($i=0;$i<count($liste);$i++){
  30.  echo "<br>";
  31.  if ( is_dir($liste[$i])==true && ($liste[$i]<>"//.." )){
  32.   echo "<img src=http://lemarechalseb.free.fr/scan_ftp/dossier.gif>"; //image de dossier
  33.   echo ($liste[$i]);
  34.   liste_dossier($liste[$i]);
  35.  } else {
  36.   echo "<img src=http://lemarechalseb.free.fr/scan_ftp/file.gif>"; //image de fichier
  37.   echo ($liste[$i]);
  38.  }
  39. }
  40. }
  41. ?>


 
y a que ".." qaui passe en dossier  :pfff:  
 
http://img346.imageshack.us/img346/7813/sanstitre8et.png
 
merci d'avance


---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 21-07-2005 à 10:47:07   

Reply

Marsh Posté le 21-07-2005 à 11:45:04    

Moi j'utilise ca :
 
$Directories = opendir ('.') ;
while (FALSE !== ($handle = readdir ($Directories)))
{
 if(($handle != '..') && ($handle !='.') && ($handle !='Thumbs.db'))
{
 if (is_dir ($handle))
 {...
 
ca marche buenos

Reply

Marsh Posté le 21-07-2005 à 11:52:48    

merci je vais essayer


Message édité par seb306bzh le 21-07-2005 à 11:52:58

---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 21-07-2005 à 11:57:33    

tu peux aussi essayer avec la taille du fichier si celle-ci fait est nulle alors c'est un dossier
 
function: http://fr2.php.net/filesize

Reply

Marsh Posté le 21-07-2005 à 12:01:19    

certes, mais un document texte "vide" a aussi une taille "nulle"

Reply

Marsh Posté le 21-07-2005 à 12:55:52    

Z'y êtes pas les gars je crois, il bosse sur ftp là, faut du ftp_* a priori.
 
Moi j'utilise ça :

Code :
  1. function ftp_isdir($ftp_id, $path) {
  2. if (($current_dir = ftp_pwd($ftp_id)) === FALSE) {
  3.  return FALSE;
  4. }
  5. if (@ftp_chdir($ftp_id, $path) === FALSE) {
  6.  return 0;
  7. }
  8.    
  9. if (ftp_chdir($ftp_id, $current_dir) === FALSE) {
  10.  return FALSE;
  11. }
  12.        
  13. return 1; 
  14. }


 
Ca retourne FALSE en cas d'erreur, 1 si c'est un rép, 0 sinon. Y'a sûrement une méthode plus simple cela dit.


Message édité par sielfried le 21-07-2005 à 16:39:03

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 13:13:57    

ftp ou pas, c'est pas le problème.
Il veut juste afficher ce que contiennent ses repertoires

Reply

Marsh Posté le 21-07-2005 à 13:20:07    

flow24 a écrit :

ftp ou pas, c'est pas le problème.
Il veut juste afficher ce que contiennent ses repertoires


 
S'il se connecte sur le serveur qui héberge le script, le ftp_connect n'a aucun intérêt dans ce cas.
 
Il parle bien de "plusieurs" ftp, et sûrement distants. is_dir et cie ne marchent pas dans ce cas.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 13:26:44    

oué c'est vrai.
 
seb, comment tu fais tourner ce script :  
1 - sur ton pc pour un / plusieurs serveurs
2 - sur un serveur pour des fichiers / dossiers sur ce serveur
3 - sur un serveur pour des fichiers / dossiers sur ce serveur et/ou un autre serveur ?

Reply

Marsh Posté le 21-07-2005 à 15:40:17    

sielfried a écrit :

Z'y êtes pas les gars je crois, il bosse sur ftp là, faut du ftp_* a priori.
 
Moi j'utilise ça :

Code :
  1. function ftp_isdir($ftp_id, $path) {
  2. if (($current_dir = ftp_pwd($ftp_id)) === FALSE) {
  3.  return FALSE;
  4. }
  5. $status = @ftp_chdir($ftp_id, $path);
  6. if ($status === FALSE) {
  7.  return 0;
  8. }
  9.    
  10. if (ftp_chdir($ftp_id, $current_dir) === FALSE) {
  11.  return FALSE;
  12. }
  13.        
  14. return 1; 
  15. }


 
Ca retourne FALSE en cas d'erreur, 1 si c'est un rép, 0 sinon. Y'a sûrement une méthode plus simple cela dit.


ça marche merci :)
 

flow24 a écrit :

oué c'est vrai.
 
seb, comment tu fais tourner ce script :  
1 - sur ton pc pour un / plusieurs serveurs
2 - sur un serveur pour des fichiers / dossiers sur ce serveur
3 - sur un serveur pour des fichiers / dossiers sur ce serveur et/ou un autre serveur ?


sur mon PC pour plusieurs comptes ftp free


---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 21-07-2005 à 15:40:17   

Reply

Marsh Posté le 21-07-2005 à 15:44:30    

par contre pourquoi j'ai des // devant chaque fichiers ?
 
http://img338.imageshack.us/img338/5494/sanstitre0eq.png


Message édité par seb306bzh le 21-07-2005 à 15:44:54

---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 21-07-2005 à 15:55:32    

ftp_nlist balance les noms depuis le répertoire courant. Joue avec ftp_chdir et balance "." à ftp_nlist pour avoir seulement les noms de fichier.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 16:02:59    

ok merci


Message édité par seb306bzh le 21-07-2005 à 16:39:08

---------------
merci http://forum.hardware.fr !!
Reply

Sujets relatifs:

Leave a Replay

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