0

我有一个网站,允许用户将照片上传到我的文件夹。当页面刷新时,它将显示该文件夹内的所有图像。

我使用 scandir 而不是 glob 函数来读取图像。我检查文件类型扩展名以查看它是否采用允许的格式(jpg、jpeg、gif、png)然后我使用循环来显示它们。每个图像旁边都有一个“删除”链接。

当用户按下“删除”链接时,我想删除文件夹中的特定图像。我知道函数 unlink() 能够删除图像,但我不能这样做,因为我不知道如何将特定图像名称传递给 delete.php。有人告诉我使用 AJAX,我还没有学过。如果有必要,我会立即去学习。所以请告诉我是否有任何方法可以解决这个问题而不是 AJAX。非常感谢!

$dir  = 'images/';

$file_type_allowed = array('jpg','jpeg','png','gif');

$dir_contents = scandir($dir);

foreach($dir_contents as $file){

    $file_type = explode('.',$file);
    $file_type = strtolower(end($file_type));

    if($file !== '.' && $file !== '..' && in_array($file_type, $file_type_allowed) == true){

        echo '<img src="', $dir, '/', $file, '" alt="', $file, '" />';
        echo '<a href="delete.php">Delete</a>';     
}
4

1 回答 1

1

您可以只在 URL 中传递参数,并通过 $_GET 超全局访问它。但是,这将重新加载页面。Ajax 将允许用户单击“删除”链接而不需要重新加载页面。

无论如何,如果您将删除链接设置为

echo '<a href="delete.php?file=' . urlencode($dir . '/' . $file) . '">Delete</a>';

然后在 delete.php 中访问需要删除的文件为

$file = urldecode($_GET['file']);
// verify the file exists, and that the user should have access
unlink($file);

但是,您需要非常小心,并确保在删除之前检查文件位置。否则,恶意用户可能只是输入“delete.php?file=delete.php”,然后破坏您的网站。因此,您需要检查他们从哪个目录删除,以及文件类型是图像。

于 2013-07-11T04:56:55.333 回答