Php 列出目录中的文件并选择删除

Php list files in directory with option to delete

我有下载-ui.php,其中有这段代码排除了一些文件并列出了目录中的所有其他文件,然后对它们进行排序并给每个文件一个复选框。

<?php
    $files = array();
    $dir = opendir('.');
    while(false != ($file = readdir($dir))) {
        if(($file != ".") and ($file != "..") and ($file != "download-ui.php") and ($file != "error_log") and ($file != "favicon.ico")) {
                $files[] = $file; 
        }   
    }

    natcasesort($files);

    foreach ($files as $file) {
        echo '<li class="browse-file">
            <div class="select-all-col"><input name="select[]" type="checkbox" class="select" value="'.$file.'"/></div>
            <div class="file-name-col"><a href="download-ui.php?name='.$folderName."/".$file.'" style="cursor: pointer;">'.$file.'</a></div>
            <br />
        </li>';
    }
?>

我正在尝试弄清楚如何获取复选框值,以便可以使用 unlink().

删除选中的这些文件

我知道我需要一个表单,但需要语法方面的帮助和捕获表单的值,这就是我目前所拥有的。

<form id="delete" action="delete.php" method="post">
    <button type="submit" form="delete" value="Submit">Submit</button>
    <input name="select[]" type="checkbox" class="select" value="'.$file.'"/>
</form>

然后delete.php我有

<?php?
    foreach ($_post['select[]'] as $file) {
        if(file_exists($file)) {
            unlink($file); 
        }
        elseif(is_dir($file)) {
            rmdir($file);
        }
    }
    echo "Files deleted successfully.";
?>

我认为我的问题是输入 <input name="select[]" type="checkbox" class="select" value="'.$file.'"/>

我在最近的努力中遇到的错误是 PHP Warning: Invalid argument supplied for foreach() in delete.php

您想遍历 $_POST['select'] 的每一项,所以您的 foreach 应该说:

foreach ($_POST['select'] as $file) {

}

注意 POST 是大写的,而 select 没有数组括号。