PHP文件删除问题?
我有以下HTML表单: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($
<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>