【问题标题】:php delete all folder when I press submit button but must delete only one folderphp在我按下提交按钮时删除所有文件夹但必须只删除一个文件夹
【发布时间】:2013-01-19 18:37:38
【问题描述】:
        <?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>

当我点击提交按钮时,我只想删除提交的文件。但是当我现在单击提交按钮时,它会删除目录中的所有文件,而不是提交... 当我单击第一个按钮时,我必须只删除“文件/文件夹”而不是全部......我怎么能得到那个????我有一个函数remove_directory。我知道我的程序带有 $_GET 变量,但我不知道如何修复它。 但是现在当我单击一个提交按钮时,删除所有文件夹 - 文件夹、文件夹 1 和文件夹 2 问题出在哪里或如何解决?

【问题讨论】:

  • 它会删除所有内容,因为每个按钮都执行相同的操作。只是换个名字?
  • @Baba 这根本不是另一个问题的重复。请仔细阅读。

标签: php directory


【解决方案1】:

PHP 代码在服务器上执行,创建的 HTML 被发送到客户端。将 PHP 代码放入表单并不意味着该代码将在表单提交时执行。事实上,它根本没有连接到表单。

您需要使用&lt;input type="hidden"&gt; 在表单中发送应删除的目录。

我还建议使用 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>

【讨论】:

    【解决方案2】:

    IF 语句更改为如下内容:

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

    您还需要在每个表单中传递所需的文件夹名称:

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

    这应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      相关资源
      最近更新 更多