dede删除会员文章中的图片
未知
2019-01-07 11:29:18
0
问题描述:
      会员在删除自己写的文章的时候,一般只会删除缩略图,并不会删除文章中的图片,这就造成了图片大量存留服务器中。

解决办法:


如果内容模型是channelid是1,文字是普通文章,就不用添加channelid。
1,打开/member/templets/content_list.html




2,打开/member/archives_do.php


3,打开/member/inc/inc_batchup.php

function DelArc($aid,$channelid) //添加这个 20行
{
    global $dsql,$cfg_cookie_encode,$cfg_ml,$cfg_upload_switch,$cfg_medias_dir;
    $aid = intval($aid);
    $channelid=intval($channelid);  //添加这个 24行

    //读取文档信息
    $arctitle = '';
    $arcurl = '';

    $arcQuery = "SELECT arc.*,ch.addtable,tp.typedir,tp.typename,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,ch.nid
          FROM `boke_archives` arc
          LEFT JOIN `boke_arctype` tp ON tp.id=arc.typeid
          LEFT JOIN `boke_channeltype` ch ON ch.id=arc.channel
        WHERE arc.id='$aid' ";
    $arcRow = $dsql->GetOne($arcQuery);
    $arcBodyRow = GetArcBody($aid,$channelid); //添加这个  36行
------------------------------------------------------------------------------------------------
85行          //移出重复附件;
                $delname = array_unique($delname['1']);
                foreach ($delname as $var)
                {
                    $dsql->ExecuteNoneQuery("DELETE FROM `boke_uploads` WHERE url='$var' AND mid = '$cfg_ml->M_ID'");
                    $upname = DEDEROOT.$var;
                    if(file_exists($upname) && !is_dir($upname)) @unlink($upname);
                }
                 //解析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);
                    }
            }
        }
        $dsql->ExecuteNoneQuery("DELETE FROM `".$arcRow['addtable']."` where aid='$aid' ");

4,打开/include/extend.fun.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,$channelid) 

    global $dsql; 
  $channelid=isset($channelid)?$channelid:1;
 
  if($channelid==1){
    $addonName="dede_addonarticle";
  } elseif($channelid==4){
    $addonName="dede_addonpopu";
  }elseif($channelid==5){
    $addonName="dede_addonpopuz";
  }
    $query = "SELECT body FROM ".$addonName." 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); 
}

这就设置好删除文章中的图片了,其中channelid和内容模型要仔细查看是否正确。

相关内容

织梦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...