云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

如何在DEDE 5.6中删除文章及其附件?

DEDE 5.6中,要删除文章并同时删除附件,可以通过修改数据库或编写自定义脚本实现。

在DEDECMS 5.6中,删除文章的同时删除附件的方法如下:

1、修改include/extend.func.php文件

打开/include目录下的extend.func.php文件。

在文件末尾添加以下三个函数:

“`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("/[azAz]+://[^ |\/|\s]*/", ”, $tmppath); // 去掉网址部分

$path .= $picpath;

$delfiles[] = $path; // 保存处理后的数据

}

return $delfiles;

}

// 获得文章Body数据

function GetArcBody($aid) {

global $dsql;

$query = "SELECT #@__addonarticle.body FROM #@__addonarticle WHERE #@__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

{$savemsg}");

@fclose($fp);

}

“`

2、修改dede/inc/inc_batchup.php文件

打开/dede/inc/inc_batchup.php文件。

在第33行下方(即$arcRow = $dsql>GetOne($arcQuery);下方)添加以下代码:

“`php

$arcBodyRow = GetArcBody($aid);

“`

在第102行下方(即if (@is_file($filenameh)) @unlink($filenameh);下方)添加以下代码:

“`php

// 解析Body中的资源,并删除

$willDelFiles = GetPicsTruePath($arcBodyRow[‘body’], $arcRow[‘litpic’]);

$nowtime = time();

$executetime = MyDate(‘Ymd 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 . "r

结果:删除成功!r

时间:" . $executetime;

else $msg = "位置:" . $file . "r

结果:删除失败!r

时间:" . $executetime;

} else $msg = "位置:" . $file . "r

结果:文件不存!r

时间:" . $executetime;

WriteToDelFiles($msg);

} //END foreach

} else {

$msg = "未在Body中解析到数据r

Body原始数据:" . $arcBodyRow[‘body’] . "r

时间:" . $executetime;

WriteToDelFiles($msg);

}

“`

通过上述步骤,可以实现在DEDECMS 5.6中删除文章的同时删除其相关的附件和图片,以下是相关问答FAQs:

FAQs:

1、Q: 如果在删除过程中遇到权限问题怎么办?

A: 如果在执行删除操作时遇到权限问题,确保运行脚本的用户对目标文件和目录具有足够的权限,可以尝试使用chmod命令修改文件权限,或者以管理员身份运行脚本。

2、Q: 如果需要保留某些特定的图片或附件,该如何修改代码?

A: 可以在GetPicsTruePath函数中添加逻辑判断,根据特定条件排除不需要删除的图片或附件,可以通过检查图片的文件名或其他属性来决定是否将其加入删除列表。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《如何在DEDE 5.6中删除文章及其附件?》
文章链接:https://www.yunzhuji.net/yunfuwuqi/234991.html

评论

  • 验证码