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 :

Lister des fichiers, en sélectionner et les supprimer OBJET [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Lister des fichiers, en sélectionner et les supprimer OBJET
    Bonjour,

    J'ai trouvé des parties de CLASS pour faire afficher des fichiers dans un répertoire afin d'en sélectionner et les supprimer.

    J'ai complété la CLASS mais tout ce que j'arrive à faire, c'est d'afficher le contenu du répertoire avec des cases à cocher.

    Cela me donne ceci en image:

    image attachée Nom : img.png
Affichages : 121
Taille : 6,3 Ko

    Le code PHP:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
     
    class Fichiers {
     
     
     
         public function readFiles() {
     
                $thelist = '';
     
                if ($handle = opendir('upload/')) {
                    $thelist .= '<form method="post"><table>';
                    $thelist .= '<tr><th colspan="2" align="left"><h2>List all files</h2></th></tr>';
                    while (false !== ($file = readdir($handle)))
                       {
                           if ($file != "." && $file != "..")
                           {
                                 $thelist .= '<tr><td><input type="checkbox" name="selectedFiles[]" value="'.$file.'"></td><td><a href="'.$file.'">'.$file.'</a></td></tr>';
                           }
                        }
     
                        $thelist .=  '<tr><td colspan="2" align="left"><input type="submit" value="Delete selected files" name="delete" style="height:30px;width:150px; margin-top:8px;"></td></tr>';
                        $thelist .= '</table></form>';
                        closedir($handle);
                } 
                echo $thelist;
            }
     
          public function selectedFiles() {
     
                 if(isset($_REQUEST['delete'])) {
                    if( sizeof( $_POST['selectedFiles'] ) > 0) {              
                        $this->deleteFiles( $_POST['selectedFiles'] );
                    }
                }
     
            }
     
            public function deleteFiles($selectedFiles) {
     
                foreach( $selectedFiles  as $selectedFile ) {
                    $path= "upload/".$selectedFile;
                    if (file_exists($path)) {
                        if( unlink( $path ) ) 
                            echo "Deleted file " .$selectedFile."\n";
                    } 
                    else {
                        echo "The file $path does not exist";
                    }            
                }
     
            }
     
    }
     
     
    $mesFichiers = new Fichiers();
    echo "FICHIERS : " . $mesFichiers->readFiles();
     
    ?>
    En principe, ça devrait pouvoir effacer les fichiers sélectionnés, mais, ce n'est pas ce qui arrive, ça ne fait rien. Même pas un message d'erreur.

    Quelqu'un peut me dire ce qui ne va pas dans le code SVP. Merci.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    montrez nous le code complet parce qu'on ne voit pas le code qui gère le formulaire là.

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Je n'ai que ce que j'ai envoyé comme code.

    La méthode selectedFile() va appeler la méthode deleteFile() pour supprimer les fichiers sélectionnés.

    Mais, la méthode readFile(), il devrait y avoir un lien avec la méthode selectedFile() après avoir lister le contenu du répertoire. Quand je regarde dans la source du navigateur, j'obtiens seulement un formulaire de base comme ceci:

    Code html : 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
    <form method="post">
        <table>
            <tr>
                <th colspan="2" align="left">
                    <h2>List all files</h2>
                </th>
            </tr>
            <tr>
                <td><input type="checkbox" name="selectedFiles[]" value="deconnexion.png"></td>
                <td><a href="upload/deconnexion.png">deconnexion.png</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="selectedFiles[]" value="home.jpg"></td>
                <td><a href="upload/home.jpg">home.jpg</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="selectedFiles[]" value="link.png"></td>
                <td><a href="upload/link.png">link.png</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="selectedFiles[]" value="images.png"></td>
                <td><a href="upload/images.png">images.png</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="selectedFiles[]" value="close.png"></td>
                <td><a href="upload/close.png">close.png</a></td>
            </tr>
            <tr>
                <td colspan="2" align="left"><input type="submit" value="Delete selected files" name="delete" style="height:30px;width:150px; margin-top:8px;"></td>
            </tr>
        </table>
    </form>




    On oublie souvent la simplicité ou la base dans la vie: Maslow

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ah oui, je n'avais pas vu le code dans la méthode "selectedFiles".
    donc il suffit d'ajouter le code $mesFichiers->selectedFiles();.

    par contre ce code n'est pas sécurisé puisqu'il permet de supprimer n'importe quel fichier du serveur en passant par exemple la valeur ../../autre_repertoire/un_fichier_important.

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut [RESOLU] merci note: quelques petit détail
    Oui Merci, ça marche bien.. pour la sécurité, bien, je vais devoir étudier un peu la dessus. Et aussi ajouter AJAX pour ne pas être oblgé de rafreshir la page.
    Mais, ça ne sera pas une section publique..

    Un exemple de sécurité?
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/06/2015, 00h44
  2. Réponses: 5
    Dernier message: 11/06/2012, 13h58
  3. Lister des fichiers dans un repertoire
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 11h14
  4. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 12h17
  5. lister des fichiers selon des critères
    Par Corben dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 18/10/2005, 16h52

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