首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

DedeCMS 5.3 刪除文檔同步刪除圖片附件修改方案(含分類信息未解決說明)

     編輯:PHP 綜合知識

測試環境與範圍

  • 版本:DedeCMS 5.3 GB 版
  • 測試環境:本地測試,未上線
  • 成功驗證模型:專題、文章、圖集
  • 部分驗證模型:分類信息(單次測試失敗,待高手解決)
  • 未測試模型:其他類別

核心修改文件清單

  1. include/inc/inc_fun_funAdmin.php
  2. include/inc/inc_fun_funString.php
  3. include/inc/inc_stat.php
  4. dede/inc/inc_archives_functions.php
  5. dede/album_add.php
  6. dede/album_edit.php
  7. include/dialog/select_soft_post.php

關鍵代碼修改

1. 上傳記錄入庫時添加 arcid 字段

查找所有 INSERT INTO dede_uploads 語句,在字段列表中添加 arcid,值綁定 $arcID:

// 修改前
INSERT INTO dede_uploads(title,url,mediatype,width,height,playtime,filesize,uptime,mid)

// 修改後
INSERT INTO dede_uploads(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES('$arcID', ...)

2. 確保 $arcID 獲取在 INSERT 之前

查找 $arcID = GetIndexKey,確保其執行位置在所有 INSERT INTO dede_uploads 之前,最好移至代碼最前端。

3. 批量刪除處理 inc/inc_batchup.php 第 155 行後添加

$dsql->SetQuery("Select * from `dede_uploads` where arcid='$aid'");
$dsql->Execute();
while($row = $dsql->GetObject()) {
    $file = $row->url;
    @unlink("..".$file);
}
$dsql->ExecuteNoneQuery("Delete From `dede_uploads` where arcid='$aid'");

核心原理

將文檔 ID(arcid)寫入上傳表 dede_uploads,刪除文檔時通過 arcid 關聯查找並物理刪除文件,最後清理數據庫記錄。關鍵在於「uploads 表必須先存入 arcid 關聯數據」。

待解決:分類信息模型刪除附件失敗,期待社區高手補全方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved