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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[插件] 限制用户重复发帖 by mfboy

[复制链接]
魔焰男孩 发表于 2006-2-10 14:05:39 | 显示全部楼层 |阅读模式
简单的东西。能防止用户在整个论坛发表重复的帖子,对付一些发广告的用户可能有效。有4个重复发帖的验证级别,看帖子后面。

转帖请标明作者、出处。


废话少说,下面说下安装方法:

打开 include/newthread.inc.php , 查找:

  1. $attachment = ($allowpostattach && $attachments = attach_upload()) ? 1 : 0;
复制代码

在下面添加:

  1. // ********************* 重复发帖检测 *****************************

  2. $repeatlevel = 4;                        // 重复发帖的验证级别

  3. $chk_sql = "SELECT COUNT(*) FROM {$tablepre}posts WHERE ";
  4. $chk_term = "";
  5. switch($repeatlevel) {
  6.         case 1:
  7.                 $chk_term = "subject='{$subject}'";
  8.                 break;
  9.         case 2:
  10.                 $chk_term = "message='{$message}'";
  11.                 break;
  12.         case 3:
  13.                 $chk_term = "subject='{$subject}' AND message='{$message}'";
  14.                 break;
  15.         case 4:
  16.                 $chk_term = "subject='{$subject}' AND message='{$message}' AND authorid='{$discuz_uid}'";
  17.                 break;
  18. }
  19. if($chk_term) {
  20.         $chk_num = $db->result($db->query($chk_sql . $chk_term), 0);
  21.         if($chk_num > 0) {
  22.                 showmessage('请不要重复发帖,这很浪费资源的。请返回。');
  23.         }
  24. }
  25. // ********************* 重复发帖检测 *****************************
复制代码


这样就行了。


关于发帖的重复检测级别,直接修改 $repeatlevel 参数就行了。下面是当这个变量的值为1~4的时候所代表的级别:
1 - 标题与数据库里的记录一致即算重复
2 - 内容与数据库里的记录一致即算重复
3 - 内容、标题与数据库里的记录都一致算重复
4 - 内容、标题、用户名与数据库里的记录都一致算重复



演示就不用了吧。。。。。。

如果要改到回复和编辑帖子也要检测,自己参考着修改 newreply.inc.php 和 editpost.inc.php 文件。把上面的代码放到更新数据库的语句上面就行了。

有问题在下面提出吧。

[ 本帖最后由 魔焰男孩 于 2006-2-11 18:59 编辑 ]

评分

1

查看全部评分

默契网管 发表于 2006-2-10 14:06:09 | 显示全部楼层
````````

测试成功

[ 本帖最后由 默契网管 于 2006-2-10 14:14 编辑 ]
回复

使用道具 举报

lh901121 发表于 2006-2-10 14:08:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

magicdream 发表于 2006-2-10 14:09:14 | 显示全部楼层
不说那么多了,先占住地板
回复

使用道具 举报

苦涩咖啡 发表于 2006-2-10 14:10:33 | 显示全部楼层
不错
回复

使用道具 举报

magicdream 发表于 2006-2-10 14:14:08 | 显示全部楼层
问一下,要是这样发个帖子,是不是得对照整个数据库检查,那样的话……………………

一般要是为了阻止发广告,就把这弄成只检查多长时间之内发表的帖子吧,少查询点数据库。
回复

使用道具 举报

abcdefg1966 发表于 2006-2-10 14:17:29 | 显示全部楼层
谢谢,先收藏
回复

使用道具 举报

 楼主| 魔焰男孩 发表于 2006-2-10 14:17:32 | 显示全部楼层
原帖由 magicdream 于 2006年2月10日 14:14 发表
问一下,要是这样发个帖子,是不是得对照整个数据库检查,那样的话……………………

一般要是为了阻止发广告,就把这弄成只检查多长时间之内发表的帖子吧,少查询点数据库。


只查询 1 次数据库而已

如果不查询,就无法检测有没有重复的帖子。

[ 本帖最后由 魔焰男孩 于 2006-2-10 14:19 编辑 ]
回复

使用道具 举报

苦涩咖啡 发表于 2006-2-10 14:34:28 | 显示全部楼层
对游客有没有作用?
回复

使用道具 举报

 楼主| 魔焰男孩 发表于 2006-2-10 14:37:31 | 显示全部楼层
一样起作用,不论是谁发帖。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 08:41 , Processed in 0.050825 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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