2017-04-13 4 views
0

J'essaie d'autoriser l'utilisateur à delete images à partir d'un dossier sur le serveur à travers html form et PHP.PHP/HTML - problème avec la gestion des formulaires - unlink() avertissement

Voici mon balisage de formulaire html avec le script PHP générant la liste images à partir du dossier mentionné précédemment. J'ai ajouté des cases à cocher avec le chemin + nom de fichier comme value.

<form action="delete.php" method="POST"> 
    <div id="formlist"> 

      <?php 
      $path = "."; 
      $dh = opendir($path); 
      $i=1; 
      $images = glob($path."*.png"); 
      while (($file = readdir($dh)) !== false) { 
       if($file != "." && $file != ".." && $file != "index.php" && $file != "form.css" && $file != ".htaccess" && $file != "error_log" && $file != "cgi-bin") { 
        echo "<div class='formshow'><a href='$path/$file' data-lightbox='Formularze' data-title='$file'><img class='formimg' src='$path/$file' width='500px'/></a><input type='checkbox' name='deleteform' value='$path/$file'></div>"; 
        $i++; 
       } 
      } 
      closedir($dh); 
      ?> 

    </div> 
    <input type="submit" value="Usun zaznaczone formularze"> 
</form> 

Maintenant, voici mon fichier delete.php:

<?php 
      $path = "."; 
      $dh = opendir($path); 
      $i=1; 
      $deletepath = glob('deleteform'); 
      while (($file = readdir($dh)) !== false) { 
        unlink($deletepath); 
        $i++; 
      } 
?> 

Je garde cette erreur:

Warning: unlink() expects parameter 1 to be a valid path, array given

Je suis tout à fait vert avec PHP, donc je décidé de vous demander les gars - comment Puis-je faire ce travail? Devrais-je unserialize() et ajouter [0], [1] compteurs?

+0

'vardump' votre $ deletepath d'abord et assurez-vous que ce n'est pas un tableau mais une chaîne. –

+0

@BagusTesa, peu importe combien de cases à cocher je vérifie, je reçois toujours ' chaîne (20) "./1492033022form.png"' –

+1

* peu importe combien de cases à cocher je vérifie, * - bien, lisez la [légendaire question sur plusieurs checkbox input] (http://stackoverflow.com/questions/4997252/get-post-from-multiple-checkboxes) encore? basiquement, change 'type = 'case à cocher' name = 'deleteform' valeur = '$ chemin/$ fichier'>' à 'type = 'checkbox' nom = 'deleteform []' valeur = '$ chemin/$ fichier'>' - Votre paramètre sera alors un tableau et vous pourrez le boucler. –

Répondre

0

Pour supprimer tous itens dans un utilisateur de dossier ceci:

$directory = "folder/"; 
    if ($cat_handle = opendir($directory)) { 
     while (false !== ($entry = readdir($cat_handle))) { 
      @unlink($directory.$entry); 
     } 
     closedir($cat_handle); 
    } 

Vous devez supprimer itens ou dossier? si vous avez besoin de supprimer l'élément spécifique:

$file_name = "fulano.jpg"; 
if ($handle = opendir('folder/')) { 
    while (false !== ($entry = readdir($handle))) { 
    if ($entry != "." && $entry != "..") { 
     if($entry == $file_name){ 
      @unlink('folder/'.$name); 
     } 
    } 
} 
    closedir($handle); 
} 

je crois qu'il fonctionne pas caso seu, changement d'accepter maintenant tableau.

+0

Je dois supprimer tous les éléments que j'ai cochés dans le formulaire html –

+0

Ok, j'ai mis à jour ma réponse. –