从服务器中删除名称不在数据库中的文件

时间:2016-04-12 14:55:57

标签: php

我有一个允许用户上传PDF文件并在数据库中保存文件名的系统。

如何使此脚本正常工作,以便用户可以从名称不在我的数据库中的服务器中删除所有文件?

这是我实际拥有的,但脚本会删除所有文件。我不知道该怎么办。

<?php 

include 'fimg.class.php';
require('../../../php/cone.php');
//header('Location: ../produccion.php');

$directory = "upload/";

//get all image files with a .jpg extension.
$images = glob($directory . "*");

foreach($images as $image)
{
    $name = explode('_',$image);
    $name = 'photos/' . $name[0];
    $sql = mysql_query("SELECT imagen FROM r_alumnos");
    if(mysql_num_rows($sql) == 0)
        unlink($image);
}

?>

1 个答案:

答案 0 :(得分:0)

你可以创建类似于维护脚本的东西。

首先,将所有内容加载到数组中(我个人不喜欢执行多个查询):

$database_files = array();
$result_db_files = mysqli_query("SELECT imagen FROM r_alumnos");

while ($row = $result_db_files->fetch_assoc())
{
    $database_files[] = $row['imagen'];
}

然后检查每个文件:

$images = glob($directory . "*");

    foreach($images as $image)
    {
        $name = explode('_',$image);
        $name = 'photos/' . $name[0];
        if (!in_array($name, $database_files))
        {
            unlink($image);
        }
    }
相关问题