Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] DZ7.0限制重复发帖和重复回帖方法(手动修改+覆盖完美免费版)

[复制链接]
中国移动我不动 发表于 2009-6-30 00:51:03 | 显示全部楼层 |阅读模式
本帖最后由 中国移动我不动 于 2009-6-30 00:52 编辑

大家看到了有这样的帖子希望不拍我,我支持原创作者,鄙视那些拿别人的东西来卖金币的,今天我也是找这样的方法,结果通过搜索看到什么“真正免费版”什么的一进去还是收费了。觉得这样很不好,而且这个限制重复发帖和回帖的功能大家能使用上对于减少广告确实用处挺大

为了服务更多的DZ站长今天我就他整体的整理了一下有手动修改版本和自动覆盖版,喜欢和支持我的朋友可以顶一下!!!谢谢!!通过测试完全可用~~~

手动修改版:
1、打开 include\newthread.inc.php
2、查找:
  1.   if($subject == '' || $message == '') {

  2.                 showmessage('post_sm_isnull');}
复制代码
3、在后面一行添加:
  1. //Refuse repeated post. Code by KaijuanStudio , Optimization by phytist
  2.         $repeated = 4;        //设置防范重复发贴的级别,0=关闭,1=防范相同ID发布相同标题的新主题,2=防范发布相同标题的新主题,3=防范发布相同标题且内容部分相同的新主题,4=防止内容一致或标题和部分内容相同的主题。
  3.         if($repeated == 1) {
  4.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE authorid='$discuz_uid' AND subject='$subject'");
  5.                 if($db->num_rows($query)) {
  6.                         $repeat = $db->fetch_array($query);
  7.                         showmessage('post_repeated', 'index.php');
  8.                 }
  9.         } elseif ($repeated == 2) {
  10.                 $query = $db->query("SELECT tid, subject FROM {$tablepre}threads WHERE subject='$subject'");
  11.                 if($db->num_rows($query)) {
  12.                         $repeat = $db->fetch_array($query);
  13.                         showmessage('post_repeated', 'index.php');
  14.                 }
  15.         } elseif ($repeated == 3) {
  16.                 $query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND subject='$subject'");
  17.                 if($db->num_rows($query)) {
  18.                         $repeat = $db->fetch_array($query);
  19.                         if($repeat['authorid'] == $discuz_uid) {
  20.                                 showmessage('post_repeated', 'index.php');
  21.                         }
  22.                         function SubString($str, $start, $len = 0xFFFFFFFF) {
  23.                                 if($start < 0) {
  24.                                         $start = strlen($str) + $start;
  25.                                 }
  26.                                 if($len < 0) {
  27.                                         $len = strlen($str) - $start + $len;
  28.                                 }
  29.                                 $tmp = '';
  30.                                 $result = '';
  31.                                 $strlen = strlen($str);
  32.                                 $begin = 0;
  33.                                 $subLen = 0;
  34.                                 for($i = 0; $i < $start + $len && $i < $strlen; $i++) {
  35.                                         if($i < $start) {
  36.                                                 if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;
  37.                                         } else {
  38.                                                 $begin=$i;
  39.                                                 for(; $i<$start+$len && $i<$strlen; $i++) {
  40.                                                         if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;
  41.                                                 }
  42.                                                 return substr($str,$begin,$i-$begin);
  43.                                         }
  44.                                 }
  45.                         }

  46.                         if(strlen($message) > 60) {
  47.                                 if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {
  48.                                         showmessage('post_repeated', 'index.php');
  49.                                 }
  50.                         } else {
  51.                                 if($message == SubString($repeat['message'], 0, 60)) {
  52.                                         showmessage('post_repeated', 'index.php');
  53.                                 }
  54.                         }
  55.                 }
  56.         }elseif ($repeated == 4) {
  57.                 $query = $db->query("SELECT tid, authorid, subject, message FROM {$tablepre}posts WHERE first='1' AND (subject='$subject' OR message='$message')");
  58.                 if($db->num_rows($query)) {
  59.                         $repeat = $db->fetch_array($query);
  60.                         if($repeat['authorid'] == $discuz_uid) {
  61.                                 showmessage('post_repeated', 'index.php');
  62.                         }
  63.                         function SubString($str, $start, $len = 0xFFFFFFFF) {
  64.                                 if($start < 0) {
  65.                                         $start = strlen($str) + $start;
  66.                                 }
  67.                                 if($len < 0) {
  68.                                         $len = strlen($str) - $start + $len;
  69.                                 }
  70.                                 $tmp = '';
  71.                                 $result = '';
  72.                                 $strlen = strlen($str);
  73.                                 $begin = 0;
  74.                                 $subLen = 0;
  75.                                 for($i = 0; $i < $start + $len && $i < $strlen; $i++) {
  76.                                         if($i < $start) {
  77.                                                 if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1]) >= 161 && ord($str[$i+1]) <= 254) $i++;
  78.                                         } else {
  79.                                                $begin=$i;
  80.                                                for(; $i<$start+$len && $i<$strlen; $i++) {
  81.                                                         if(ord($str[$i]) >= 161 && ord($str[$i]) <= 247 && ord($str[$i+1])>=161 && ord($str[$i+1])<=254) $i++;
  82.                                                 }
  83.                                                 return substr($str,$begin,$i-$begin);
  84.                                         }
  85.                                 }
  86.                         }

  87.                         if(strlen($message) > 60) {
  88.                                 if(SubString($message, -100) == SubString($repeat['message'], -100) || SubString($message, 50, 100) == SubString($repeat['message'], 50, 100)) {
  89.                                         showmessage('post_repeated', 'index.php');
  90.                                 }
  91.                         } else {
  92.                                 if($message == SubString($repeat['message'], 0, 60)) {
  93.                                         showmessage('post_repeated', 'index.php');
  94.                                 }
  95.                         }
  96.                 }
  97.         }

  98. //Refuse repeated post. Code End
复制代码
* 添加提示信息(可选择加与不加,加了后当发重复的帖子的时候会有温馨提示增加用户体验)
1、打开:templates\default\messages.lang.php
2、查找:
  1. 'post_net_price_iszero' => '您的主题售价扣除积分交易税后为 0,请返回修改。',
复制代码
复制代码
3、在后面一行添加:
  1.   'post_repeated' => '您所发布的主题或内容已存在:《<a href="viewthread.php?tid=$repeat[tid]" target="_blank">$repeat[subject]</a>》请勿重复发布。',
复制代码
不会修改的站长,或者是以上两个文件没有动过的,要直接覆盖的话,我给个已经改好的压缩包,解压覆盖下就直接可以用了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

popuppp 发表于 2009-6-30 01:25:16 | 显示全部楼层
支持。
回复

使用道具 举报

水边拉拉 发表于 2009-6-30 09:03:40 | 显示全部楼层
好东西就是需要支持!!
回复

使用道具 举报

tcnki 发表于 2009-6-30 10:20:38 | 显示全部楼层
经过刚才测试完全可以用,特地过来谢谢楼主!!!好样的~
回复

使用道具 举报

史莱姆KING 发表于 2009-6-30 12:02:36 | 显示全部楼层
这东西能否调整只针对某些用户使用?

比如仅仅限制LV5以下的
回复

使用道具 举报

 楼主| 中国移动我不动 发表于 2009-6-30 12:31:39 | 显示全部楼层
这东西能否调整只针对某些用户使用?

比如仅仅限制LV5以下的
史莱姆KING 发表于 2009-6-30 12:02


一般说来这是对重复发帖标题一模一样的帖才会限制
这个功能对任何管理组不都是起到一个好的作用么
如果针对特定的组也可以的
需要修改一下,过几天我把对特定组的发上来~~
回复

使用道具 举报

wjunnet 发表于 2009-7-1 01:15:41 | 显示全部楼层
回复

使用道具 举报

szqww 发表于 2009-7-1 13:28:17 | 显示全部楼层
很好的东西 谢谢分享
回复

使用道具 举报

kissywj 发表于 2009-7-1 13:56:51 | 显示全部楼层
支持下

www.hefeimall.com
回复

使用道具 举报

lyxyw 发表于 2009-7-2 08:59:10 | 显示全部楼层
已收藏,谢谢共享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 14:34 , Processed in 0.041181 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表