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>

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

4

2 回答 2

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>
于 2013-01-19T18:51:16.777 回答
0

IF语句更改为如下内容:

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

您还需要以每种形式传递所需的文件夹名称:

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

那应该可以解决问题。

于 2013-01-19T18:44:46.357 回答