0

我正在尝试列出目录中的所有文件并在单击“删除”链接时删除文件,但是,它告诉我该文件不存在,向我显示以下错误消息:

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);
}

删除文件.php

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

unlink("$file");

?>
4

2 回答 2

1

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

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

或者,您可以通过将您的语句deletefile.php更改为来传递目录:echofiles.php

echo "$file <a href=\"deletefile.php?file=$file&dir=$dir\">DELETE</a><br />"; 

然后您可以在deletefile.phpthrough内部访问它$_GET['dir'],因此您的代码将类似于:

$dir = $_GET['dir'];
$file = basename($_GET['file']);
unlink($dir.$file);
于 2013-01-16T12:35:51.510 回答
0

这是因为unlink("$file");$file 只是文件名,它应该是绝对路径或正确的相对路径。检查路径使用 ../ 和 ./ 给出相对路径。

于 2013-01-16T12:42:15.053 回答