PHP文件删除问题?

PHP文件删除问题?,php,html,delete-file,Php,Html,Delete File,我有以下HTML表单: <form action='delete.php' method='POST'> <table> <div class = '.table'> <?php $dir = '../uploads/store/'; $newdir = ereg_replace('\.','',$dir); if (is_dir($

我有以下HTML表单:

<form action='delete.php' method='POST'>
    <table>
        <div class = '.table'>
            <?php
            $dir = '../uploads/store/';
            $newdir = ereg_replace('\.','',$dir);

            if (is_dir($dir)) {
               if ($dh = opendir($dir)) {
                  while (($file = readdir($dh)) !== false) {
                     if (!preg_match('/^(\.(htaccess|\.)?|index\.html)/',$file)) {
                        echo "<tr><td><font color = 'white'><a href='$newdir$file'>$file</a></font></td>";
                        echo "<td><input type='submit' value ='Delete'></td></tr>";
                        echo "<input align='right' type='hidden' value='$file' name='file'>";
                     }
                  }
                  closedir($dh);
               }
            }
            ?>
        </div>
    </table>
</form>

但是,在HTML表单中按Delete按钮时,将删除要删除的项目上方的项目

希望这是有意义的


注意:我不打算使用这些脚本来保证安全性,我将在以后处理这个问题。现在只有我在使用此服务。

您的HTML表单需要让各种提交按钮传递
$file
的值,而不是使用隐藏字段

问题是,当您提交表单时,所有隐藏字段都被发布到delete.php。然后,由于您没有使用PHP友好的HTML数组变量语法,PHP只使用最后一种语法来设置
$\u POST['file']
的值。如果在
delete.php
中执行
var\u dump
$\u POST
,您将看到发布的输入是什么

使用当前标记,最简单的方法就是将每个提交按钮命名为
file
,并将$file作为其
值传递给它。i、 e.你可以做:

<button name="file" value="example.txt" type="submit">Delete</button>
删除

或者,您可以使用单选按钮或其他标记。

p.s.编写的脚本不安全。它受到目录遍历攻击,CSRF。。。始终验证您的输入!是您的朋友。不工作,错误:“警告:取消链接(../uploads/store/)[function.unlink]:是一个目录”
<button name="file" value="example.txt" type="submit">Delete</button>