2017-04-13 55 views
0

我想允許用戶通過html formPHP從服務器上的文件夾delete imagesPHP/HTML - 問題與表單處理 - unlink()警告

這裏是我的html表格標記以及前面提到的文件夾中的PHP腳本生成列表images。我已經添加了路徑+文件名爲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> 

現在,這裏是我的delete.php文件:

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

我把這個錯誤:

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

我很綠色,使用PHP,所以我決定問你們 - 怎麼樣我可以做這個工作嗎?我應該unserialize()它並加[0][1]計數器?

+0

'vardump'你的'$ deletepath'首先確保它不是一個數組而是一個字符串。 –

+0

@BagusTesa無論我檢查多少個複選框,我總是會得到' string(20)「./1492033022form.png」' –

+1

*無論我檢查多少個複選框,* - 好,請閱讀[multiple複選框輸入](http://stackoverflow.com/questions/4997252/get-post-from-multiple-checkboxes)呢?基本上,將'type ='checkbox'name ='deleteform'value ='$ path/$ file'>'改爲'type ='checkbox'name ='deleteform []'value ='$ path/$ file'>' - 你的參數將是一個數組,然後你可以將其循環。 –

回答

0

要刪除所有itens文件夾中的用戶這樣的:

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

您需要刪除itens或文件夾? 如果需要刪除特定項目:

$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); 
} 

我相信它的工作原理沒有SEU卡索,改變目前接受陣列。

+0

我需要刪除我已經在html表格中檢查過的所有項目 –

+0

好吧,我更新了我的回覆。 –