从文件夹中删除特定图像

时间:2013-07-11 04:49:53

标签: php

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

我使用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>';     
}

1 个答案:

答案 0 :(得分: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”,并破坏您的网站。因此,您需要检查他们要删除的目录,以及文件类型是图像。