织梦dedecms后台删除文章的同时删除文章中的图片
未知
2019-04-25 09:59:54
0
问题描述:
      在后台删除文章的时候,一般不会直接删除数据库信息及缩略图和文章中的图片,而是放入回收站中。如果在回收站中再删除的话就会删除数据库信息及缩略图,但是文章中的图片是删除不了的。那么我们服务器中的无用图片就会慢慢的多起来。
解决办法:
  1.打开/include/extend.func.php文件,在最后加入如下代码



//解析body数据,获得所有图片的绝对地址
function GetPicsTruePath($body,$litpic)
{
    $delfiles = array();  //存储图片地址数据
    if(!empty($litpic))
    {
            $litpicpath = GetTruePath();
            $litpicpath .= $litpic;
            $delfiles[] = $litpicpath;      //缩略图地址
    }
    preg_match_all("/src=[\"|'|\S|\s]([^ |\/|>]*){0,}(([^>]*)\.(gif|jpg|png))/isU",$body,$tmpdata);
    $picspath = array_unique($tmpdata[2]);//body中所有图片的地址
    foreach($picspath as $tmppath)
    {
        $path = GetTruePath();//获得绝对路径
        $picpath = preg_replace("/[a-zA-z]+:\/\/[^ |\/|\s]*/",'',$tmppath);//去掉网址部分
        $path .=$picpath;
        $delfiles[] = $path;//保存处理后的数据
      }
     return $delfiles;
}

//获得文章Body数据 
function GetArcBody($aid) 
{ 
    global $dsql; 
    $query = "SELECT body FROM dede_addonarticle WHERE aid = '$aid'"; 
    $row = $dsql->GetOne($query); 
    if(is_array($row)) 
    return $row; 
    else 
    return false; 
}

//写入日志文件 
function WriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志 
{ 

    if(empty($msg)) $savemsg="未获得消息"; 
    else $savemsg = $msg; 
    $errorFile = dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件 
    $fp = @fopen($errorFile, 'a'); 
    @fwrite($fp," {$savemsg}"); 
    @fclose($fp); 
}

2.打开dede/inc/inc_batchup.php文件,找到54行:

查找$arcRow = $dsql->GetOne($arcQuery);

在下边添加:

$arcBodyRow = GetArcBody($aid);
最后找到   / /删除相关附件   if里面的while最后一个}下面,差不多121行下面添加:



//解析Body中的资源,并删除  
$willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);
$nowtime = time();
$executetime = MyDate('Y-m-d H:i:s',$nowtime);

//获得执行时间  
$msg = " 文章标题:$arcRow[title]";
WriteToDelFiles($msg);
if(!empty($willDelFiles))  
{
     foreach($willDelFiles as $file)  
     {
             if(file_exists($file) && !is_dir($file))  
             {
               if(unlink($file)) $msg = " 位置:$file 结果:删除成功! 时间:$executetime"; else $msg = " 位置:$file 结果:删除失败! 时间:$executetime";

             }
             //mobantianxia.cn修改于2010.01.28 else $msg = " 位置:$file 结果:文件不存! 时间:$executetime";
             WriteToDelFiles($msg);
     }
     //END foreach
} else  
{
        $msg = " 未在Body中解析到数据 Body原始数据:$arcBodyRow[body] 时间:$executetime";
        WriteToDelFiles($msg);
} 



经过本人检测:删除单篇文章时,缩略图和文章中的图片都能删除;删除多篇文章时,缩略图和文章中的图片也能删除。
会员前端发布的文章,管理员在后台删除后,缩略图和文章中的图片也可以删除。
这篇文章是针对后台管理员删除文章,并非前端的会员自己删除文章。

相关内容

织梦dedecms后台删除...
问题描述: 在后台删除文章的时候,一般不会直接删除数据库信息及缩略...
2019-04-25 09:59:54
dede删除会员文章中的图...
问题描述: 会员在删除自己写的文章的时候,一般只会删除缩略图,并不...
2019-01-07 11:29:18

热门资讯

dedecms织梦上传缩略图没... 问题描述: dedecms织梦发布文章页面,表单缩略图在[站内选择]点击后,上传图片后没图片。或者修...
织梦后台一键更新所有出现空白问... 问题描述: 我织梦后台更新所有的时候,只更新到id为4 之后就成为空白 没有下文了,这是什么情况? ...
百度搜索网站后点击跳转到彩票赌... 问题描述: 在公司有一个官网,近期总是有人 告诉我,在百度搜索网站名称,点击后网站跳转到彩票赌博类网...
dede织梦后台添加文章,提示... 问题描述: 安装dedecms织梦的时候,一切安装完成,进入后台添加网站栏目,在网站栏目下添加文章的...
dede删除会员文章中的图片 问题描述: 会员在删除自己写的文章的时候,一般只会删除缩略图,并不会删除文章中的图片,这就造成了图片...
dede织梦 跳转指定页面并刷... 问题描述: 在给评论添加回复功能的时候,遇到了跳转问题。评论区是在artilce_article.h...
织梦dedecms添加或者增加... 第一步:执行SQL命令为数据库的栏目表结构添加一个字段(执行选多行命令),在后台也可以在数据库里面也...
dede PDF下载在线浏览 问题描述: 在普通文章内容模型中添加一个字段,上传PDF文件。 解决办法: 第一步: 在后台打开附件...
dedecms调用评论最多的文... dede cms评论最多的文章排行版代码调用,并且调用第一条评论内容。 { dede : sql s...
dede织梦使channela... 在dedecms织梦5,3手册中,我们可以看到只有channel标签可以支持currentstyle...