代码之家  ›  专栏  ›  技术社区  ›  AlwaysConfused

正在删除目录

  •  0
  • AlwaysConfused  · 技术社区  · 12 年前

    当我用下面的代码删除上传文件夹中的目录后,我的上传文件夹被删除时,我遇到了一个问题

    function delete_files($target,$target_thumb) {
    
    if(is_dir($target)){
        $files = glob( $target . '*', GLOB_MARK ); 
    
        foreach( $files as $file )
        {
            delete_files( $file );      
        }
    
        rmdir( $target );
    } elseif(is_file($target)) {
        unlink( $target );  
    }
    
     if(is_dir($target_thumb)){
        $files = glob( $target_thumb . '*', GLOB_MARK ); 
    
        foreach( $files as $file )
        {
            delete_files( $file );      
        }
    
        rmdir( $target_thumb );
    } elseif(is_file($target_thumb)) {
        unlink( $target_thumb );  
    }
    }
    

    我只想从上传文件夹中删除类别和其中的文件。。它的作用是删除所有上载文件夹中的所有文件。不知道为什么。任何建议都会有帮助。

    编辑1:

    我懂了。。 $target 显示为 "../uploads/" 在我回应之后。。

    $cat_id = $_GET['cat_id'];
    $cat_data = data_cat($cat_id,'name');
    
    if (empty($cat_id)){
    header("Location: categories.php");
    exit;
    }
    
    if (isset($_GET['cat_id'])){
    $cat_id = $_GET['cat_id'];
    
    $query = mysql_query("DELETE FROM cattegories WHERE cat_id = $cat_id");
    
    $target = ('../uploads/'.$cat_data['name']);
    $target_thumb = ('../uploads/thumbs/'.$cat_data['name']);
    delete_cat($cat_id);
    delete_files($target,$target_thumb);
    header("Location: categories.php");
    exit();
    }
    

    我的函数似乎无法获取类别的名称。。

    编辑2:

    那是我的 data_cat 功能:

    function data_cat($cat_id){
        $cat_id = (int)$cat_id;
    
        $args = func_get_args();
        unset($args[0]);
        $fields = '`'.implode('`,`', $args).'`';
    
        $query = mysql_query("SELECT $fields FROM `cattegories` WHERE `cat_id` = $cat_id");
        $query_result = mysql_fetch_assoc($query);
        foreach ($args as $field){
            $args[$field] = $query_result[$field];
        }
        return $args;
    
    }
    

    P.S.名称categories是正确的,我只是在数据库命名中犯了一个错误。

    1 回复  |  直到 10 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    因为你有 rmdir( $target ); rmdir( $target_thumb ); 在脚本中。去掉它,你会留下你想要的目录。

    PHP手册: rmdir 删除目录

    尝试删除以目录名命名的目录。目录必须 为空,并且相关权限必须允许此操作。警告(_W) 失败时将生成级别错误。

    编辑1:

    根据您最后的评论,您应该调试 $target $target_thumb 变量:

    echo '<pre>';
    print_r( $target );
    echo '</pre>';
    

    输出是什么?对您的问题进行编辑并提供输出,我将能够帮助您解决问题。

    编辑2:

    在查看了您发布的代码后,我强烈建议对其进行重组,因为它很容易受到SQL注入的影响: SQL injections in ADOdb and general website security