作为一位论坛管理员,最烦恼的莫过于垃圾帖子和大量无意义的灌水帖子。我们都会想尽办法与垃圾贴、灌水贴、广告贴做斗争,您解决不了这些问题,那么你的论坛永远也不会强大,看到满世界的这类垃圾帖子,试问,还有谁会耐着性子,继续浏览下去?站长们在想尽办法来防止垃圾帖子的泛滥、康盛的官方开发团队也在不断提供新方法、新功能为我站长供应强大的“弹药”,如防水墙,就是这种产物,而今天的重点不是讨论如何防水墙的,无忧主机(www.51php.com)小编和大家一起学习一个限制discuz!x2.5垃圾信息泛滥的重武器——如何限制会员每天发帖数量。

在使用dz的站长都晓得,dz后台默认的功能中,可以自定义会员每小时发帖的数量,这个是默认功能,但这个功能也不是很好用,如果过了时间限制,那么又可能会刮起新一轮垃圾帖子狂潮。能否可以限制disucz!x2.5每个会员每天发帖数量类?无忧主机(www.51php.com)认为是可以的,我们接下来,就一起详细学习一下。

要实现这个功能,我们需要修改disucz论坛的源代码,那么,一个文本编辑器是不可缺少的,这是成功的保障。我们只需要修改lang_admincp.php、lang_message.php、table_common_member_action_log.php就可以实现这个效果。下面是详细过程。

首选,连接php虚拟主机下载这三个文件下载到本地电脑

/source/language/lang_admincp.php

/source/language/lang_message.php

/source/language/lang_message.php

然后以此修改、替换代码如下:

1、修改discuz!x2.5后台功能菜单设置显示提示

使用文本编辑editplus打开\source\language\lang_admincp.php

查找定位约3703行

'usergroups_edit_basic_hour_threads'=>
'会员每小时发主题数限制',
'usergroups_edit_basic_hour_threads_comment'=>
'设置允许会员每小时最多的发主题数量,
可以配合灌水预防功能进一步限制会员的发帖,
可设置为 1~255 范围内的数值,0 为不限制。
此功能会轻微加重服务器负担,且对游客无效',
'usergroups_edit_basic_hour_posts'=>
'会员每小时发回帖数限制',
'usergroups_edit_basic_hour_posts_comment'=>
'设置允许会员每小时最多的发回帖数量,
可以配合灌水预防功能进一步限制会员的发帖,
可设置为 1~255 范围内的数值,0 为不限制。
此功能会轻微加重服务器负担,且对游客无效',

替换

'usergroups_edit_basic_hour_threads'
=> '会员每天发主题数限制',
'usergroups_edit_basic_hour_threads_comment'
=> '设置允许会员每天最多的发主题数量,
可以配合灌水预防功能进一步限制会员的发帖,
可设置为 1~255 范围内的数值,0 为不限制。
此功能会轻微加重服务器负担,且对游客无效',
'usergroups_edit_basic_hour_posts'
=> '会员每天发回帖数限制',
'usergroups_edit_basic_hour_posts_comment'
=> '设置允许会员每天最多的发回帖数量,
可以配合灌水预防功能进一步限制会员的发帖,
可设置为 1~255 范围内的数值,0 为不限制。
此功能会轻微加重服务器负担,且对游客无效',

2、用户组每天发帖限制提示

使用文本编辑editplus打开\source\language\lang_message.php

查找约144行

'thread_flood_ctrl_threads_per_hour' =>
'抱歉,您所在的用户组每天限制发主题 {threads_per_hour} 个,请稍候再发表',

替换

'thread_flood_ctrl_threads_per_hour' =>
 '抱歉,您所在的用户组每天限制发主题 {threads_per_hour} 个,请稍候再发表',

3、修改检验程序文件:会员每小时发帖数限制更改为会员每天发帖数限制

使用文本编辑editplus打开\source\class\table\table_common_member_action_log.php

查找约31行
public function count_per_hour($uid, $type) {
return DB::result_first('SELECT COUNT(*) FROM %t WHERE dateline>%d AND `action`=%d AND uid=%d', array($this->_table, TIMESTAMP - 3600,
getuseraction($type), $uid));
}

替换

public function count_per_hour($uid, $type) {
return DB::result_first('SELECT COUNT(*) FROM %t WHERE dateline>%d AND `action`=%d AND uid=%d', array($this->_table, TIMESTAMP - 86400,
getuseraction($type), $uid));
}

将上述修改完毕后,上传到原目录进行覆盖后,完成限制论坛会员每天发帖数量的限制。效果如下对比

Dz后台默认的每小时发帖限制限制

image00122 150x150 Discuz!x2.5如何限制会员每天发帖数量

成功修改为按会员每天发帖数

image00315 150x150 Discuz!x2.5如何限制会员每天发帖数量

Dz后台默认的每小时发帖限制成功修改为按会员每天发帖数,如果你也设置好了,赶快去测试下吧,同时你还可以参照:设置DISCUZ!X2.5 防灌水垃圾帖设置策略,抵御垃圾非法信息的侵害。

 

纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名

本文地址:http://www.51php.com/discuz/7585.html

喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

阅读本文的人还阅读: