评论

收藏

[织梦CMS] Dede 删除文档同时文章中的图片的方法

建站程序 建站程序 发布于:2021-07-13 23:13 | 阅读数:526 | 评论:0

首先,在"/include"目录下建立"extend.func.php"文件. 然后,将以下内容保存在"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]([^ title="liehuo.net" |\/|>]*){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 dede_addonarticle.body FROM `dede_addonarticle` WHERE dede_addonarticle.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,"\r\n{$savemsg}");  
@fclose($fp);  
}  

接下来打开"/dede/inc/inc_batchup.php"文件。  
1:在33行下方加入,也就是"$arcRow = $dsql->GetOne($arcQuery);"下方:  
$arcBodyRow = GetArcBody($aid);  
2:在138行下方加入,也就是"return true;"上方:  


//解析Body中的资源,并删除  
$willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);  
$nowtime = time();  
$executetime = MyDate('Y-m-d H:i:s',$nowtime);//获得执行时间  
$msg = "\r\n文章标题:$arcRow[title]";  
WriteToDelFiles($msg);  
if(!empty($willDelFiles))  
{  
foreach($willDelFiles as $file)  
{  
if(file_exists($file) && !is_dir($file))  
{  
if(unlink($file)) $msg = "\r\n位置:$file\r\n结果:删除成功!\r\n时间:$executetime";  
else $msg = "\r\n位置:$file\r\n结果:删除失败!\r\n时间:$executetime";  
}  
else $msg = "\r\n位置:$file\r\n结果:文件不存!\r\n时间:$executetime";  
WriteToDelFiles($msg);  
}//END foreach  
}  
else  
{  
$msg = "\r\n未在Body中解析到数据\r\nBody原始数据:$arcBodyRow[body]\r\n时间:$executetime";  
WriteToDelFiles($msg);  
}  

至此,全部修改完成,删除文章时,程序会分析Body中的图片地址,然后删除.并在/data/目录下,产生日志记录文件:del_body_file.txt。跟版网-专业织梦模板下载平台,转载请注明出处:http://www.genban.org/news/dedecms-7438.html


关注下面的标签,发现更多相似文章