2013-01-19 63 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"> 

应该解决这个问题。

相关问题