如何删除php目录

如何删除php目录,php,forms,rmdir,delete-directory,Php,Forms,Rmdir,Delete Directory,我正在尝试制作表单以删除所选选项,该选项是图像中的子目录。我有一个函数,可以删除子文件夹中的所有文件,然后删除整个子文件夹,但当我调用它时,什么也没发生。有人能帮我吗? 以下是我的html表单和php代码: <form method='post' action='/category'> <div class="form-group"> <select class="custom-select" name="category_to_delet

我正在尝试制作表单以删除所选选项,该选项是
图像中的子目录。我有一个函数,可以删除子文件夹中的所有文件,然后删除整个子文件夹,但当我调用它时,什么也没发生。有人能帮我吗?
以下是我的html表单和php代码:

    <form method='post' action='/category'>
    <div class="form-group">
    <select  class="custom-select" name="category_to_delete" style="width:60%;">
    <?php 

    foreach(glob(dirname(__FILE__) . '/images/*') as $categories_list){
       if(is_dir($categories_list)){
          $categories_list = basename($categories_list);

    echo "<option value='" . $categories_list . "'>".$categories_list."</option>";
       }
    }
    ?>

    </select>
    </div>
    <?php
    function delete_directory($dirname) {
       if (is_dir($dirname))
          $dir_handle = opendir($dirname);
       if (!$dir_handle)
          return false;
       while($file = readdir($dir_handle)) {
             if ($file != "." && $file != "..") {
               if (!is_dir($dirname."/".$file))
                  unlink($dirname."/".$file);
               else
                  delete_directory($dirname.'/'.$file);
            }
        }
        closedir($dir_handle);
        rmdir($dirname);
        return true;
        }
        if(isset($_POST['delete'])){
           if(isset($_GET['category_to_delete']) && $_GET['category_to_delete']!=''){
                $category_delete = $_POST['category_to_delete'];
                delete_directory('images/'.$category_delete);
                echo "Deleted";
           }
        }

       ?>
       <div class="form-group">          
       <button type='submit' value='Delete' name='delete'> Usuń</button>
       </div>
</form>


我在你的剧本中发现了错误。以下是答案,希望这能解决问题(如果没有其他错误):

您的表单将使用方法=“post”

在您的代码中,您可以对照
$\u GET

错:
if(isset($\u GET['category\u to'u delete'])和&$\u GET['category\u to'u delete']!=”{

正确:
if(设置($\u POST['category\u to\u delete'])和&$\u POST['category\u to\u delete'])!=”{

最终代码必须如下所示:

if(isset($_POST['delete'])){
    if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
            $category_delete = $_POST['category_to_delete'];
            delete_directory('images/'.$category_delete);
            echo "Deleted";
    }
}
还要注意的是,您选中了
isset($\u POST['delete'])
->这是您的按钮。如果您不单击按钮并按Enter键发送
,则没有
$\u POST['delete']
,它将无法工作

为您提供更多信息:

if(isset($_POST['delete'])){
    if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
            $category_delete = $_POST['category_to_delete'];
            delete_directory('images/'.$category_delete);
            echo "Deleted";
    }
}
您的函数
delete\u目录
和表单处理
if(isset($\u POST['delete']){
放在您的
foreach(glob(dirname(\uu文件).'/images/*')后面作为$categories\u列表){


这意味着,如果您要删除某些内容并发送表单,则下拉列表/选择列表将再次包含这些文件,因为在您真正处理表单之前,将再次扫描目录
images/*
中的文件(删除所选文件/目录)。您应该将函数和表单处理放在类别之前。通常在任何HTML/输出处理之前都会执行类似操作。

它是否删除文件而不删除目录?或者什么都没有发生?您是否收到任何错误消息?代码看起来正常。问题是文件/目录是否具有权限以使纸条无法访问(删除)它们。什么都没有发生,所有文件都保存在文件夹中,我在网站或控制台中没有任何错误。文件和目录都是正确的。是的,非常感谢!我没有注意到这个错误。我更正了我的代码,现在它工作得非常出色。谢谢:)是的,这是一个非常简单的错误,很难识别,因为你不计算我犯了这样一个错误。我还得再看一眼。:-)