PHP -通过超链接删除目录中列出的文件


PHP - Deleting a file listed in a Directory through a hyperlink

我试图列出目录中的所有文件并删除文件,如果单击' delete '链接,但是,它告诉我该文件不存在,显示我这些错误消息:

Notice: Undefined index: dir in C:'xampp'htdocs'Task2PHP'final'deletefile.php on line 4
Warning: unlink(adam.png): No such file or directory in C:'xampp'htdocs'Task2PHP'final'deletefile.php on line 7

files.php(代码块):

@$selected_path = $_POST['myFiles'];
$dir = $selected_path;
echo "<br>Current files in: " . $dir . " <br /><br />";
if ($handle = opendir($dir)) {
   while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

            echo "$file <a href=deletefile.php?file=$file>DELETE</a><br />"; 
        }
    }
    closedir($handle);
}

deletefile.php

<?php
session_start();
$username = $_SESSION['username'];
$dir = $_SESSION['dir'];
$file= basename($_GET['file']);//added
unlink("$file");
?>

unlink()函数将相对于deletefile.php的位置查找adam.png。如果图像位于目录中,则需要这样做:

session_start();
$username = $_SESSION['username'];
$dir = $_SESSION['dir'];
$file= basename($_GET['file']);//added
unlink('folder/container/'.$file); // or maybe you want unlink($dir.$file);

或者,您可以通过将files.php中的echo语句更改为:

将目录传递给deletefile.php
echo "$file <a href='"deletefile.php?file=$file&dir=$dir'">DELETE</a><br />"; 

你可以通过$_GET['dir']访问deletefile.php内部,所以你的代码应该是这样的:

$dir = $_GET['dir'];
$file = basename($_GET['file']);
unlink($dir.$file);

因为unlink("$file"); $file只是文件名,所以它应该是绝对路径或适当的相对路径。检查路径使用…