Un bouton pour supprimer un répertoire fichiers et dossiers

Fermé
solarian_4612 Messages postés 7 Date d'inscription vendredi 2 septembre 2022 Statut Membre Dernière intervention 15 septembre 2022 - 14 sept. 2022 à 16:41
solarian_4612 Messages postés 7 Date d'inscription vendredi 2 septembre 2022 Statut Membre Dernière intervention 15 septembre 2022 - 15 sept. 2022 à 16:26

Bonjour,

Sur un site en construction je suis en train d'installer certaines fonctions dont parmi elles un bouton de suppression de dossier après un téléchargement.

J'ai essayer énormément de solutions mais là je bloque: pas d'erreur mais par d'action non plus et je n'arrive pas a trouver mon erreur. je suis assez débutant donc quelques conseils me seront d'une grande aide. 

je suis sous windows11 avec xampp en local et php 8.1

code php: 

<?php

  //supression du repertoire

  $dir = 'documents/homme/temp';

  function RepEfface($dir)

        {

        $handle = opendir($dir);

        while($elem = readdir($handle))

        //ce while vide tous les repertoire et sous rep

          {

          if(is_dir($dir.'/'.$elem) && substr($elem, -2, 2) !== '..' && substr(

          $elem, -1, 1) !== '.') //si c'est un repertoire

            {

                RepEfface($dir.'/'.$elem);

            }

          else

            {

            if(substr($elem, -2, 2) !== '..' && substr($elem, -1, 1) !== '.')

              {

                  unlink($dir.'/'.$elem);

              }

            }          

          }

        $handle = opendir($dir);

        while($elem = readdir($handle)) //ce while efface tous les dossiers

          {

          if(is_dir($dir.'/'.$elem) && substr($elem, -2, 2) !== '..' && substr(

          $elem, -1, 1) !== '.') //si c'est un repertoire

            {

                RepEfface($dir.'/'.$elem);

                rmdir($dir.'/'.$elem);

            }  

          }

        }

?>

code html

<!doctype html>

<html>

  <head>

  <meta charset="utf-8" />

    <title>

      Formulaire document 

    </title>

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">

  </head>

  <body>

    <div class="container py-5">

      <p>

      <body>

        <h3 class="text-muted mt-5 mb-4">Effacez vos informations:</h3>

        <input class="btn btn-primary btn-block mt-4" type="button" onclick= "RepEfface($dir)" value="Effacer le dossier" />  

      </body>

     </div>

  </body>

</html>


Windows / Chrome 105.0.0.0

A voir également:

4 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 14 sept. 2022 à 19:02

Salut solarian_4612,

Lorsque tu postes du code sur CCM, fais le en utilisant le bouton "Insérer un extrait de code" (à droite du bouton "Image" dans la barre d'outils) en choisissant le langage de programmation. Cela sera plus lisible.

Je n'ai pas essayé, ni regardé en détails ton code .php.

Cependant, dans ton fichier .html le

onclick= "RepEfface($dir)"

ne fait pas ce que tu penses. Il tente de lancer une fonction JavaScript RepEfface(), qui n'existe pas. De plus $dir n'est pas une syntaxe JavaScript pour désigner une variable et, d'ailleurs, tu ne récupères aucune variable JavaScript "dir" ou autre dans ton code dans ton fichier .html.

Une façon de faire simple pour exécuter un script .php à partir d'un bouton de ton code .html est de mettre ton bouton que tu crées avec une balise <input type="submit"> dans un formulaire avec la balise <form> et d'indiquer dans les paramètres du formulaire qu'il doit générer une requête GET vers ta page .php.

Si tu mets d'autres éléments dans ton formulaire, ton script .php peut les récupérer et agir dessus.

Tu as un exemple ici : https://www.w3schools.com/php/php_forms.asp et un tutoriel simple que tu pourrais suivre pour le familiariser avec ces fonctionnements.

Je te déconseille très fortement que ton script .php supprime le contenu de répertoires récursivement sur la base d'une saisie de l'utilisateur à moins que tu saches très exactement ce que tu fais et que tu contrôles la saisie ou que tu maîtrises exactement la portée des actions qui seront effectuées sur cette base.

0
solarian_4612 Messages postés 7 Date d'inscription vendredi 2 septembre 2022 Statut Membre Dernière intervention 15 septembre 2022
14 sept. 2022 à 19:04

merci pour ta réponse, je vais retester dans ce sens. 

je n'avais pas vue la fenêtre pour le code. je le saurais a l'avenir

a bientôt pour le retour

0
solarian_4612 Messages postés 7 Date d'inscription vendredi 2 septembre 2022 Statut Membre Dernière intervention 15 septembre 2022
Modifié le 15 sept. 2022 à 15:46

bonjour, jours de l'incompréhension de mon coté semble t il ...

rappel: un formulaire rempli des documents , ces documents sont chargés dans un dossier temporaire où il seront ajouté a une archive compressée pour un téléchargement. Une fois celui-ci chargé le client efface ses données(dossiers et fichiers créés a partir de ses données) par un bouton (et a défaut plus tard sous 24h mais je n'en suis pas encore là) ...

jusqu'au téléchargement pas de soucis. Au moment de l'effacement, j'efface la page mais pas le répertoire temporaire (temp)... 

<!doctype html>
<html>
	<head>
	<meta charset="utf-8" />
		<title>
			Formulaire document Homme
		</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
	</head>

  <body>
    <div class="container py-5">
      <h3 class="text-muted mb-4">Votre dossier en cours</h3>
      <h4>Date du dossier: <?php echo $date_du_dossier; ?></h4>
      <h4> <?php echo $iam; ?></h4>
      <p>
      <body> 
        <h3 class="text-muted mt-5 mb-4">Vos informations sont enregistrées:</h3>
        <a href="<?php echo $zip_file_name; ?>" class="btn btn-success" download >Télécharger votre dossier <?php echo $prénom .' '. $nom ?></a></br>

        <h3 class="text-muted mt-5 mb-4">Effacez vos informations:</h3>
        <form action="supression.php" method="post"> 
        <input  type="submit" > Supprimer votre dossier <?php echo $prénom .' '. $nom ?>
        </form>
      </body>
     </div>
  </body>
</html>

avec ça le fichier . PHP pour effacer le répertoire 

"supression.php"

:

<?
$dossier="documents/homme/temp";
$ouverture=opendir($dossier);
$fichier=readdir($ouverture);
$fichier=readdir($ouverture);
while ($fichier=readdir($ouverture)) {
unlink("$dossier/$fichier");
}
closedir($ouverture);
?>
0
solarian_4612 Messages postés 7 Date d'inscription vendredi 2 septembre 2022 Statut Membre Dernière intervention 15 septembre 2022
Modifié le 15 sept. 2022 à 16:29

pour aidez ceux et celle qui chercherait cette solution. J'ai réussis avec cette adaptation. Il reste bien entendu toute la sécurisation.. La partie html reste la même

Par contre j'ai revue la partie php

<?php
$dir = "documents/homme/temp/";
$dir = new RecursiveDirectoryIterator(
    $dir, FilesystemIterator::SKIP_DOTS);
    $dir = new RecursiveIteratorIterator(
    $dir,RecursiveIteratorIterator::CHILD_FIRST);
    foreach ( $dir as $file ) { 
    $file->isDir() ?  rmdir($file) : unlink($file);
}
?> 
0