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

DedeCMS 問答模塊:移除登錄強制與積分限制的精確修改點

     編輯:PHP 相關知識

需求背景

DedeCMS 內建問答模塊(/ask/)預設:
1. 必須登錄才能提問(未登錄跳轉登錄頁)
2. 提問消耗積分(匿名 10 分 + 懸賞分),積分不足報錯

目標:**匿名可提問、無積分門檻**。

修改文件:ask/post.php

1. 移除登錄強制(約第 20-30 行)

// 原代碼
if (!isset($action)) $action = '';
if (empty($uid) && $action != 'rate') {
    ShowMsg('請先登錄', '../member/login.php?gourl=../ask/');
    exit();
}

// 修改為:直接註釋或刪除整個 if 塊
// if (!isset($action)) $action = '';
// if (empty($uid) && $action != 'rate') { ... }

注意:$uid 來自會員系統,註釋後匿名用戶 $uid 為空/0,下游邏輯需兼容。

2. 移除積分檢查(約第 50-60 行)

// 原代碼
$needscore = $anonymous * 10 + $reward;
if ($scores < $needscore) {
    ShowMsg('積分不足', '-1');
}

// 修改為:註釋或設為 0
// $needscore = $anonymous * 10 + $reward;
// if ($scores < $needscore) { ... }

// 或保留變量但歸零
$needscore = 0;

3. 兼容匿名用戶的下游字段

檢查同文件後續 INSERT INTO dede_ask 語句,確保 mid(會員 ID)、username 允許為 0/空:

$mid = $uid ? $uid : 0;
$username = $uid ? $cfg_ml->M_UserName : '匿名用戶';

前端模板同步調整

模板文件 templets/plus/ask_post.htm(或對應風格目錄):

  • 移除「請登錄後提問」提示區塊。
  • 隱藏「匿名提問扣 10 分」選項(或保留 UI 但前端不校驗)。
  • 表單提交目標保持 action="post.php"。

驗證清單

  1. 未登錄訪問 /ask/post.php → 直接顯示提問表單,不跳轉登錄頁。
  2. 提交空積分賬號提問 → 成功入庫,不提示「積分不足」。
  3. 後台「問答管理」能看到匿名提問記錄,mid=0、username='匿名用戶'。
  4. 積分系統其他功能(簽到、回答獎勵)不受影響。

風險提示

  • 開放匿名提問可能導致垃圾內容灌水,**建議配合驗證碼、頻率限制、關鍵詞過濾**使用。
  • 修改核心文件會導致升級覆蓋失效,建議記錄修改點或製作補丁包。
  • DedeCMS 官方已停止維護,**強烈建議遷移至現代框架(Laravel/ThinkPHP)重構問答業務**。

總結

精確註釋 ask/post.php 中的 **登錄強制跳轉塊** 與 **積分門檻判斷塊**,同步調整模板與匿名字段兼容,即可實現「無需登錄、無需積分」的開放提問。生產環境務必加上反灌水措施。

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