返回列表 發帖 ‹‹ 會員群組增加 會員每小時回帖數限制 修正設置禁止訪問時間段之後 無法註冊的問題 ››

輕鬆完成限制重複發帖 For Discuz! All Version

標題是參考來的

這個功能其實以前我用ASP寫討論區的時候 有用到
剛剛看到這個主題 忽然想起來
一直以來 網路上發佈的這類型插件
都是使用數據庫查詢 我是覺得這種方式 雖然比較準確
但是也會對伺服器造成小小的負擔
使用以下方式 可以輕鬆完成而且也不會增加查詢


演示 http://discuz.bluelovers.net/forum-58.html
到此區註冊後 發帖測試即可

開啟 include\newthread.inc.php

if($subject == '' || $message == '') {
                showmessage('post_sm_isnull');
        }
底下加上
        if(($_DCOOKIE['lastpostsubject'] && $_DCOOKIE['lastpostsubject'] == md5($subject)) || ($_DCOOKIE['lastpostmessage'] && $_DCOOKIE['lastpostmessage'] == md5($message))) {
                showmessage('post_error_reposted');
        }
        if($forum['threadtypes']['expiration'][$typeid] && !$typeexpiration) {
                showmessage('threadtype_expiration_invalid');
        }
底下加上
        dsetcookie('lastpostsubject', md5($subject), 1800);
        dsetcookie('lastpostmessage', md5($message), 1800);
開啟 templates\default\messages.lang.php

'post_net_price_iszero' => '您的主題售價扣除積分交易稅後為 0,請返回修改。',
底下加上
'post_error_reposted' => '對不起,您發表的主題OR內容與上次發表可能相同,請勿重複發佈!',
完成
Loading...
複製這篇網址分享給朋友: http://discuz.bluelovers.net/thread-4234-1.html#pid6465

本篇的內容不含引用除另有聲明外,如符合 CC授權條款 則套用 姓名標示-非商業性-相同方式分享 3.0 通用版

套一句黃小琥說過的話:「你可以點歌,但是我可以選歌」

限制重複發帖 For Discuz! All Version

http://www.alan888.com/Discuz/thread-128451-1-1.html

名稱:限制重複發帖 For Discuz! All Version
安裝難度:極易
適用版本:Discuz!所有版本
作者:KaijuanStudio
安裝步驟:

核心修改
打開 include\newthread.inc.php
查找:
複製代碼
  1.         if($subject == '' || $message == '') {
  2.                 showmessage('post_sm_isnull');
  3.         }
在後面一行添加:
複製代碼
  1. //Refuse repeated post. Code by KaijuanStudio
  2.         if($repeated == 1) {
  3.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE authorid='$discuz_uid' AND subject='$subject'");
  4.                 if($db->num_rows($query)) {
  5.                         $repeat = $db->fetch_array($query);
  6.                         showmessage('post_repeated', 'index.php');
  7.                 }
  8.         } elseif ($repeated == 2) {
  9.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE subject='$subject'");
  10.                 if($db->num_rows($query)) {
  11.                         $repeat = $db->fetch_array($query);
  12.                         showmessage('post_repeated', 'index.php');
  13.                 }
  14.         } elseif ($repeated == 3) {
  15.                 $query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND subject='$subject'");
  16.                 if($db->num_rows($query)) {
  17.                         $repeat = $db->fetch_array($query);
  18.                         if($repeat['authorid'] == $discuz_uid) {
  19.                                 showmessage('post_repeated', 'index.php');
  20.                         }

  21.                         function SubString($str, $start, $len = 0xFFFFFFFF) {
  22.                                 if($start < 0) {
  23.                                         $start = strlen($str) + $start;
  24.                                 }
  25.                                 if($len < 0) {
  26.                                         $len = strlen($str) - $start + $len;
  27.                                 }
  28.                                 $tmp = '';
  29.                                 $result = '';
  30.                                 $strlen = strlen($str);
  31.                                 $begin = 0;
  32.                                 $subLen = 0;
  33.                                 for($i = 0; $i < $start + $len && $i < $strlen; $i++) {
  34.                                         if($i < $start) {
  35.                                                 if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;
  36.                                         } else {
  37.                                                 $begin=$i;
  38.                                                 for(; $i<$start+$len && $i<$strlen; $i++) {
  39.                                                         if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;
  40.                                                 }
  41.                                                 return substr($str,$begin,$i-$begin);
  42.                                         }
  43.                                 }
  44.                         }

  45.                         if(strlen($message) > 60) {
  46.                                 if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {
  47.                                         showmessage('post_repeated', 'index.php');
  48.                                 }
  49.                         } else {
  50.                                 if($message == SubString($repeat['message'], 0, 60)) {
  51.                                         showmessage('post_repeated', 'index.php');
  52.                                 }
  53.                         }
  54.                 }
  55.         }
  56. //Refuse repeated post. Code End
添加提示信息

    * 打開:templates\default\messages.lang.php
    * 查找:
複製代碼
  1. 'post_net_price_iszero' => '您的主題售價扣除積分交易稅後為 0,請返回修改。',
在後面一行添加:
複製代碼
  1. 'post_repeated' => '您所發佈的主題已存在:《<a href=\"viewthread.php?tid=$repeat[tid]\" target=\"_blank\">$repeat[subject]</a>》請勿重複發佈。',
添加設置

    * 打開:config.inc.php
    * 在最後添加一段:
複製代碼
  1. $repeated = 0;        //設置防範重複發帖的級別,0=關閉,1=防範相同ID發佈相同禁題的新主題,2=防範發佈相同標題的新主題,3=防範發佈相同標題且內容部分相同的新主題。
您可根據自己的需要,隨時更改 $repeated 的數值,以關閉或開啟限制重複發貼不同的防範級別完成!
上傳更新修改的三個文件。
複製這篇網址分享給朋友: http://discuz.bluelovers.net/thread-4234-1.html#pid6476

本篇的內容不含引用除另有聲明外,如符合 CC授權條款 則套用 姓名標示-非商業性-相同方式分享 3.0 通用版

TOP

RE: 輕鬆完成限制重複發帖 For Discuz! All Version

有無重復回帖嘅設置?
複製這篇網址分享給朋友: http://discuz.bluelovers.net/thread-4234-1.html#pid19281

本篇的內容不含引用除另有聲明外,如符合 CC授權條款 則套用 姓名標示-非商業性-相同方式分享 3.0 通用版

TOP

返回列表 發帖 ‹‹ 會員群組增加 會員每小時回帖數限制 修正設置禁止訪問時間段之後 無法註冊的問題 ››