您的位置:首页 > 编程语言 > PHP开发

DISCUZ!X2.5如何限制会员每天发帖数量

2016-06-17 11:32 447 查看
作为一位论坛管理员,最烦恼的莫过于垃圾帖子和大量无意义的灌水帖子。我们都会想尽办法与垃圾贴、灌水贴、广告贴做斗争,您解决不了这些问题,那么你的论坛永远也不会强大,看到满世界的这类垃圾帖子,试问,还有谁会耐着性子,继续浏览下去?站长们在想尽办法来防止垃圾帖子的泛滥、康盛的官方开发团队也在不断提供新方法、新功能为我站长供应强大的“弹药”,如防水墙,就是这种产物,而今天的重点不是讨论如何防水墙的,无忧主机(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行

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

1
'usergroups_edit_basic_hour_threads'
2
=>
'会员每天发主题数限制'
,
3
'usergroups_edit_basic_hour_threads_comment'
4
=>'设置允许会员每天最多的发主题数量,
5
可以配合灌水预防功能进一步限制会员的发帖,
6
可设置为
1~255范围内的数值,0为不限制。
7
此功能会轻微加重服务器负担,且对游客无效',
8
'usergroups_edit_basic_hour_posts'
9
=>
'会员每天发回帖数限制'
,
10
'usergroups_edit_basic_hour_posts_comment'
11
=>'设置允许会员每天最多的发回帖数量,
12
可以配合灌水预防功能进一步限制会员的发帖,
13
可设置为
1~255范围内的数值,0为不限制。
14
此功能会轻微加重服务器负担,且对游客无效',
2、用户组每天发帖限制提示
使用文本编辑editplus打开\source\language\lang_message.php
查找约144行

1
'thread_flood_ctrl_threads_per_hour'

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

1
'thread_flood_ctrl_threads_per_hour'

=>
2
'抱歉,您所在的用户组每天限制发主题
{threads_per_hour}个,请稍候再发表'
,
3、修改检验程序文件:会员每小时发帖数限制更改为会员每天发帖数限制
使用文本编辑editplus打开\source\class\table\table_common_member_action_log.php

1
查找约31行
2
public

function
count_per_hour(
$uid
,
$type
)
{
3
return

DB::result_first(
'SELECT
COUNT(*)FROM%tWHEREdateline>%dAND`action`=%dANDuid=%d'
,
array
(
$this
->_table,TIMESTAMP-3600,
4
getuseraction(
$type
),
$uid
));
5
}
替换

1
public

function
count_per_hour($uid,$type){
2
return

DB::result_first(
'SELECT
COUNT(*)FROM%tWHEREdateline>%dAND`action`=%dANDuid=%d'
,array($
this
->_table,TIMESTAMP-
86400
,
3
getuseraction($type),$uid));
4
}
将上述修改完毕后,上传到原目录进行覆盖后,完成限制论坛会员每天发帖数量的限制。效果如下对比
Dz后台默认的每小时发帖限制限制



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



Dz后台默认的每小时发帖限制成功修改为按会员每天发帖数,如果你也设置好了,赶快去测试下吧,同时你还可以参照:设置DISCUZ!X2.5
防灌水垃圾帖设置策略,抵御垃圾非法信息的侵害。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php discuz