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

deletefile.php

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

unlink("$file");

?>
4

2 に答える 2

1

この関数は、 の位置を基準にしてunlink()を探します。画像がディレクトリ内にある場合は、次のようにする必要があります。adam.pngdeletefile.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);

または、to のステートメントを次のようdeletefile.phpに変更して、ディレクトリを渡すこともできます。echofiles.php

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

deletefile.phpその後、 through内でこれにアクセスできる$_GET['dir']ため、コードは次のようになります。

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

$file はファイル名のみであるためunlink("$file");、絶対パスまたは適切な相対パスにする必要があります。../ および ./ を使用してパスを確認し、相対パスを指定します。

于 2013-01-16T12:42:15.053 に答える