IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[FTP] suppression de répertoire utilisateur


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [FTP] suppression de répertoire utilisateur
    Bonjour,
    je suis débutant, j'aimerais savoir si quelqu'un peut trouver d'où vient l'erreur dans la partie de ce script php
    Je tourne en rond depuis trop de temps dessus et j'ai pas vraiment trouvé de sujet en rapport

    Le but du code est de permettre à l'admin de supprimer un répertoire utilisateur et ses sous rep seulement si ils sont vide, en retournant un message d'informer à l'admin si la commande rencontre un fichier.

    la configuration des répertoires est la suivante :

    rep user (aucun fichier) -> rep nouveau --> contient (ou pas) des données
    -> rep archive --> contient (ou pas) des données


    j'ai un fichier php qui gère la suppression, lancé par l'intermédiaire d'un case" ":

    c'est de partir de 3 variables que je commence, elles contiennent le chemin d'accès de chaque répertoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // lecture des repetoires
    $repnouveau="$users1/nouveau";
    $rep=opendir($repnouveau);
     
    $reparchive="$users1/archive";
    $rep2=opendir($reparchive);
     
    $repuser="$users1";
    $rep3=opendir($repuser);
     
    $fichier=readdir($rep);
    $fichier2=readdir($rep2);
    $fichier3=readdir($rep3);
     
    // condition
    if (($fichier!=".") and ($fichier!="..") or ($fichier2!=".") and ($fichier2!="..") or ($fichier3!=".") and ($fichier3!="..")) {
    echo 'Des fichiers sont présents';
    return;
     
    }else{
     
    // suppression
    rmdir("$users1/nouveau");
    rmdir("$users1/archive");
    rmdir($users1);

    Si sa peut aider, il s'agit d'un site utilisant une gestion de compte client avec des répertoires placé sur ftp pour chaque utilisateur...

    Ma fonction marche pour le rep parant et les 2 sous rep seulement si ils sont vide, mais lorsque l'on rencontre un fichier, la commande passe outre le message et continue son exécution... en continuant vers la partie suppression de l'user sur la bdd

    merci pour votre aide

  2. #2
    Membre régulier Avatar de randimby
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Points : 72
    Points
    72
    Par défaut
    readdir() lit un fichier ou dossier quelconque. J'insiste sur le mot UN.
    Si un dossier contient 1 et 1 seul fichier nommé filex, alors (en pratique):
    - au premier appel de readdir($rep), il retourne '.',
    - au second appel, il retourne '..',
    - au troisième appel, il retourne ('filex').

    Ici, tu appelle readdir() sur chacun des handles une seule fois, donc tu auras toujours '.', qu'il y ait ou non des fichiers sur le dossier.

    Tu devrais boucler l'appel à readdir().

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse randimby

    Je vais tester ce soir de créer une boucle avec les readdir() mais je suis pas sur de bien avoir compris :s t'aurais pas un exemple à me donner ?

    la syntaxe de ma condition / instruction est elle bonne ?

    je me rends compte que ma commande est inutile pour le rep parent, étant donné qu'il contient toujours les 2 sous rep "nouveau" et "archive", mes opendir() / readdir() doivent donc se porter uniquement sur ces 2 rep...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai règlé le problème, il s'agissait de mon script concernant les conditions...

    J'ai donc simplement utilisé la condition :

    if (a) {
    b}elseif (c){
    d}else{e}

    donc si cela peut servir à d'autres débutants comme moi, ce petit script sert à interroger un répertoire avant sa suppression :
    - il retourne un message de confirmation de suppression si le ou les rep sont vide
    - il retourne un message d'echec de la suppression si un fichier est présent à l'intérieur d'un des répertoires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?PHP
    // définition des variables
    $cheminrep1="user/test1/"; // le chemin de votre rep 1
    $rep1=opendir($cheminrep1);
    $cpt1=0;
     
    $cheminrep2="user/test2/"; // le chemin de votre rep 2
    $rep2=opendir($cheminrep2);
    $cpt2=0;
     
    $i=1;
     
    // la consulatation des rep
    while($fichier1=readdir($rep1))
    {
     
      if (($fichier1!=".") and ($fichier1!=".."))
        $cpt1++;}
     
    while($fichier2=readdir($rep2))
    {
     
      if (($fichier2!=".") and ($fichier2!=".."))
        $cpt2++;}
     
    // la condition avant la suppression
    if ($cpt1 >= $i) {
     
    echo "Echec : un fichier est présent dans le rep 1";
     
    }elseif ($cpt2 >= $i) {
     
    echo "Echec : un fichier est présent dans le rep 2";
     
    }else{
     
    rmdir("$cheminrep1");
    rmdir("$cheminrep2");
     
    echo "Les repertoires ont bien été supprimé";
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/06/2006, 14h45
  2. [FTP] Suppression de fichiers !
    Par Dsphinx dans le forum Langage
    Réponses: 14
    Dernier message: 29/05/2006, 09h39
  3. [ftp]suppression d'un fichier
    Par stfm dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 08/03/2006, 11h23
  4. [FTP] creation de répertoire et permissions unix
    Par evaness dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2006, 12h40
  5. [ftp] transfert de répertoire
    Par XtoX dans le forum Développement
    Réponses: 1
    Dernier message: 17/10/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo