2013-01-19 111 views
0
 <?php 
     function remove_directory($directory) { 
      if (is_dir($directory) === true) { 
       $contents = scandir($directory); 
       unset($contents[0], $contents[1]); 

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

     ?> 
     <h1>DELETE</h1> 
     <form action="" method="get"> 
      <?php if (isset($_GET['delete']) === true) { 
       remove_directory('files/folder');/when I click that submit button must delete only 'folder' not all 'folder1' and 'folder2' 
       } 
      ?> 
      <input type="submit" name="delete"/> 
     </form> 
     <form action="" method="get"> 
      <?php if (isset($_GET['delete']) === true) { 
       remove_directory('files/folder1'); // when I click that submit button must delete only 'folder1' 
       } 
      ?> 
      <input type="submit" name="delete"/> 
     </form> 
     <form action="" method="get"> 
      <?php if (isset($_GET['delete']) === true) { 
       remove_directory('files/folder2'); // when I click that submit button must delete only 'folder2' 
       } 
      ?> 
      <input type="submit" name="delete"/> 
     </form> 

當我點擊提交按鈕,我想刪除只提交的文件。但是,當我點擊提交按鈕現在它刪除目錄中的所有文件不是onlu提交... 當我點擊第一個按鈕,我必須刪除'文件/文件夾'不是所有...我怎麼能得到的?我有一個函數remove_directory。我知道我的proglem是$ _GET變量,但我不知道如何修復它。 但現在當我點擊只是一個提交按鈕刪除所有文件夾 - 文件夾,文件夾1和文件夾2 問題在哪裏或我可以修復它?php刪除所有文件夾時,我按下提交按鈕,但必須刪除只有一個文件夾

+0

它會刪除所有內容,因爲每個按鈕都執行相同的操作。只是命名他們不同? – art2

+0

@Baba這完全不是其他問題的重複。請仔細閱讀。 –

回答

1

PHP代碼在服務器上執行,創建的HTML發送給客戶端。將PHP代碼放入表單並不意味着該代碼將在表單提交中執行。事實上,它並沒有連接到表單上。

取而代之,您需要發送哪些目錄應該在表格中使用<input type="hidden">刪除。

另外我建議使用POST而不是GET。

<?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) === 'dir') { 
       remove_directory($current_object); 
      } else { 
       unlink($current_object);  
      } 
     } 

     rmdir($directory); 
    } 

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

    ?> 
    <h1>DELETE</h1> 
    <form action="" method="post"> 
     <input type="hidden" name="dir" value="folder" /> 
     <input type="submit" name="delete"/> 
    </form> 
    <form action="" method="post"> 
     <input type="hidden" name="dir" value="folder2" /> 
     <input type="submit" name="delete"/> 
    </form> 
    <form action="" method="post"> 
     <input type="hidden" name="dir" value="folder1" /> 
     <input type="submit" name="delete"/> 
    </form> 
0

變化IF聲明是這樣的:

if (isset($_GET['delete']) === 'folder') 

還需要在每個表單傳遞所需的文件夾名稱:

<input type="hidden" name="delete" value="folder"> 

應該解決這個問題。

相關問題