eliminazione cartella

  • Creatore Discussione Creatore Discussione Imperor
  • Data di inizio Data di inizio

Imperor

Utente Attivo
25 Nov 2010
102
2
18
Roma
www.fcfclean.it
sera per testare il sito uso l'ultima versione di xampp ho ritrovato un codice per eliminare una sottocartella su un sito che ho creato tempo indietro funziona alla grande lo stesso codice l'ho inserito nel nuovo sito che sto creando non funziona mi da errore 125 e 128 non riesco a capire il perchè posto il code
Codice:
 <?Php
                    $dir='documenti'; // directory name
                    $ar=scandir($dir);
                    $box=$_POST['box'];  // Receive the file list from form

                    // Looping through the list of selected files ///
                    while (list ($key,$val) = @each ($box)) {
                    $path=$dir    ."/".$val;
                    if(unlink($path)) echo "Deleted file ";
                    echo "$val,";
                    }
                    echo "<hr>";
                    $ar=scandir($dir);// Once again directory content is scanned to exclude deleted files.
                    /// displaying the file names with checkbox and form ////
                    echo "<form method=post name='username' action=''>";
                    while (list ($key, $val) = each ($ar)) {
                    if(strlen($val)>3){
                    echo "<input type=checkbox name=box[] value='$val'>$val<br>";
                    }
                    }
                    echo "<input type=submit value='Delete'></form>";
                    ?>
 
quale riga/righe di codice danno errore ?
puoi postare la descrizione completa degli errori ?
ciao il code è da riscrivere perchè non legge le sottocartella es: documenti/ dentro la cartella documenti ci sono altre cartelle con i nomi utenti quando un utente si registra io creo la sottocartella con il nome utente il sito che sto facendo è per un amministratore di codomini ma mi manca la funzione per eliminare la sottocartella e il contenuto in questo caso pdf e doc
 

Allegati

  • Screenshot (29).png
    Screenshot (29).png
    121,9 KB · Visite: 69
  • Screenshot (30).png
    Screenshot (30).png
    168,8 KB · Visite: 77
i messaggi di errore sono chiari,

alla riga 122 viene usato il campo "box" dal form, ma non é stato definito

la funzione each é deprecata ed eliminata dalle versioni php successive alla 7.2
 
  • Like
Reactions: Imperor
i messaggi di errore sono chiari,

alla riga 122 viene usato il campo "box" dal form, ma non é stato definito

la funzione each é deprecata ed eliminata dalle versioni php successive alla 7.2
ciao e buongiorno a ecco il perchè non sono un programmatore ma autodidatta :) si può risolvere? stavo provando a scrivere un nuovo codice ma con il checkbox meglio con il select dove selezioni la sottocartella da eliminare questo è ciò che sto a scrivere è da completare :) uso xampp l'ultima versione 8.0
Codice:
<?php

                $path = "documenti";
                $dh = dir($path);
                while( ($file=$dh->read()) !== false) {
                    if( $file=="." || $file=="..")continue;
                    $realfile = $path . "/" . $file;
                    echo "<hr>";
                    echo (is_dir($realfile))?  "<tr><td>$file</a></td>":"<tr><td>$file</a></td>";
                    echo "<form method=post name='f1' action=''>";
                    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
                    echo "<input type=submit value='Delete'></form>";
                }
                ?>
 
@marino51 ciao ho trovato in rete dei codici seleziona sottocartella e elimina la sottocartella compreso il contenuto ma non riesco a farlo funzionare posto il code
Codice:
<input type="hidden" name="username" value="username" /><input type="hidden" name="Selection"  id="Selection" value="-1"><div>Seleziona la cartella da eliminare.</div>
                <select size="1" name="username" id="username">
                <?php
                   $directory = $directory = 'documenti/' . $username;
                   $filesContents = Array();
                   $files = scandir( $directory ) ;

                   foreach( $files as $file )
                  {
                   if ( ! is_dir( $file ) )
                  {
                   $filesContents[$file] = file_get_contents($directory , $file);
                  echo "<option>" . $file . "</option>";
                  }
                   }
                   ?>
                   </select>
                   <br>
                   <br>
                   <input type="submit" value="Elimina" name="file">
                   <hr>
                  
                    <?php
                    //  If a session already exists, this doesn't have any effect.

                          $directory = $directory = 'documenti' . $username;
                          $file_to_delete = $_POST['$file'];
                            if ( unlink ($directory.'/'.$file_to_delete) ) {
                          echo $file_to_delete . " deleted.";
                        } else {
                            echo "Error.";
                        }
                    
                    ?>
 

Allegati

  • Screenshot (36).png
    Screenshot (36).png
    128,6 KB · Visite: 75
come vedi anche tu, sono presenti errori che impediscono il funzionamento
evidentemente hai apportato modifiche disastrose al codice
 
  • Like
Reactions: Imperor
ciao e grazie non sono un programmatore riuscivo solo a malapena a programmare il mirc e il vincula per le ex chat di msn :) ma se devo scrivere un code :( ancora grazie x l'aiuto :)
ciao usando l'intelligenza artificiale mi ha generato i codici per eliminare la sottocartella :) ma non so come eseguire il clik in modo da eliminare la sottocartella selezionata usando delete_directory
Codice:
<input type="hidden" name="username" value="username" /><input type="hidden" name="username"  id="username" value="-1"><div>Seleziona la cartella da eliminare.</div>
                <select size="1" name="username" id="username">
                <?php
                   $directory = 'documenti/' . $username;
                   $filesContents = Array();
                   $files = scandir( $directory ) ;

                   foreach( $files as $file )
                  {
                   if ( ! is_dir( $file ) )
                  {
                   $filesContents[$file] = file_get_contents($directory , $file);
                  echo "<option>" . $file . "</option>";
                  }
                   }
                   ?>
                   </select>
                   <br>
                   <br>
                 
<?php
                   
                   function delete_directory($directory) {
                   if (is_dir($directory))
                      $dir_handle = opendir($directory);
                   if (!$dir_handle)
                      return false;
                   while($username = readdir($dir_handle)) {
                      if ($username != "." && $username != "..") {
                         if (!is_dir($directory."/".$username))
                            unlink($directory."/".$username);
                         else
                            delete_directory($directory.'documenti/'.$username);
                      }
                   }
                   closedir($dir_handle);
                   rmdir($directory);
                   return true;
                }
                   ?>
 
Ultima modifica:
@marino51 ciao ho cambiato tutto manca solo la funzione per il submit
Codice:
<?php
                    $username = glob("documenti/*");
                    ?>

                    <form method="post">
                      <label for="select-cartella">Scegli la cartella da eliminare</label>
                      <select name="username" id="username">
                    <?php foreach($username as $username): ?>
                        <option value="<?= htmlspecialchars(basename($username)) ?>"><?= htmlspecialchars(basename($username)) ?></option>
                    <?php endforeach ?>
                      </select>
                     <input type="submit" value="Elimina" name="submit">
                    </form>
                   <?php
                  
                  
                  
                    function removeDir($dir) {
                    if (is_dir($dir)) {
                        $username = scandir($dir);
                        foreach ($username as $username) {
                            if ($username !== '.' && $username !== '..') {
                                if (filetype($dir.'/'.$username) === "dir") {
                                    removeDir($dir . '/' . $username);
                                }
                                else {
                                    unlink($dir.'documenti/'.$username);
                                }
                            }
                        }
                        reset($username);
                        unlink($dir);
                    }
                }
                    ?>
 
@marino51 buongiorno forse ci sono riuscito ma anche se dice cartella eliminata non elimina nulla :(
Codice:
<h6>elimina cartella utente</h6>
                <?php
                    $username = glob("documenti/*");
                    ?>
                  <?php
                    function remove_directory($directory) {
                        if (!is_dir($directory)) return;

                        $contents = scandir($directory);
                        unset($contents[0], $contents[1]);

                        foreach($contents as $object) {
                            $current_object = $directory.'/'.$object;
                            if (filetype($current_object) === 'username') {
                                remove_directory($current_object);
                            } else {
                                unlink($current_object);   
                            }
                        }

                        rmdir($directory);
                    }

                    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username'])) {
                        $username = basename($_POST['username']);
                        if ($username[0] != '.') remove_directory("documenti/".$username);
                    }

                    ?>
                    <form method="post">
                      <label for="select-cartella">Scegli la cartella da eliminare</label>
                      <select name="username" id="username">
                    <?php foreach($username as $username): ?>
                        <option value="<?= htmlspecialchars(basename($username)) ?>"><?= htmlspecialchars(basename($username)) ?></option>
                    <?php endforeach ?>
                      </select>
                     <input type="submit" value="Elimina" name="username">
                    </form>
 
risolto :) ora elimina sia la sottocartella e contenuto :)
Codice:
<?php
                    function remove_directory($directory) {
                        if (!is_dir($directory)) return;

                        $contents = scandir($directory);
                        unset($contents[0], $contents[1]);

                        foreach($contents as $object) {
                            $current_object = $directory.'/'.$object;
                            if (filetype($current_object) === 'username') {
                                remove_directory($current_object);
                            } else {
                                unlink($current_object);   
                            }
                        }

                        rmdir($directory);
                    }

                    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username'])) {
                        $username = basename($_POST['username']);
                        if ($username[0] != '.') remove_directory("documenti/$username");
                    }

                    ?>
                    <form action="" method="post">
                    <input type="text" name="username"/>
                    <input type="submit" name="delete"/>
                    </form>
 

Discussioni simili