新闻中心

phpbb防御刷帖技巧设置限制规定时间内会员发帖数

作者 / 无忧主机 时间 2013-05-15 17:21:50

作为一个论坛的站长管理好论坛是第一要务,要想论坛发展好控制论坛垃圾帖、灌水帖是非常重要的,尤其是新手站长,往往对这种情况有些手足无措,常常受到垃圾帖子、广告的骚扰和迫害,严重影响到了用户对网站的体验。那么,是否有一种行之有效解决问题的方法类?我们常见想过措施新会员注册验证、通过ip注册时间隔限制、新手发帖限制等,这些方法结合一起来用,就能形成一个强大的用户发帖限制系统。无忧主机(www.51php,.com)小编在上一篇“phpbb如何修改帖子和主题标题字数限制”介绍了限制phpbb帖子标题的长度限制,我们依然可以用限制的方法,限制规定时间内用户发帖数。意思就是现在以这些用户在规定时间内(如2小时)能够发几张帖子(如5张),从而降低论坛被刷帖,导致海量的垃圾信息的出现。具体实现方法如下: 1、首先就是需要您通过ftp工具连接您的php虚拟主机。 2、找到网站根目录(public_html)下的posting.php 下载到您本地,并通过文本编辑器打开。 查找:

// Is the user able to post within this forum?

if ($post_data['forum_type'] != FORUM_POST && in_array($mode, array('post', 'bump', 'quote', 'reply')))

{

       trigger_error('USER_CANNOT_FORUM_POST');

}
在这段代码的后面加上
Only allow a fixed amount of posts per time ***/

    switch( $mode ) {

        case 'post':  // Creating a topic

        case 'reply':  // Reply to an existing topic

        case 'quote':  // Reply to an existing topic using a quote

            define( 'MAX_POST_COUNT', 5 );  // How many posts(最多发贴数,可自定义)...

            define( 'MAX_POST_TIME', 60 );  // ...in how many minutes(规定多少时间)

          define( 'MAX_EDIT_COUNT_ERRORMSG', ' 在 ' .MAX_POST_TIME.' 分钟你只能发表 '. MAX_POST_COUNT. ' 个主题贴 ' );

            $iCntEdit= 0;

            $sql= 'SELECT count( post_id ) AS cnt

                    FROM '. POSTS_TABLE. '

                    WHERE poster_id= '. $user-> data['user_id']. '

                    AND post_time>= '. ( time()- MAX_POST_TIME* 60 );

            $rSql= $db-> sql_query( $sql );

            while( $aRow= $db-> sql_fetchrow( $rSql ) ) $iCntEdit= $aRow['cnt'];

            $db-> sql_freeresult( $rSql );

            if( $iCntEdit>= MAX_POST_COUNT ) trigger_error( MAX_EDIT_COUNT_ERRORMSG );

        break;

}
修改好保存并上传到空间取代以前的posting.php文件 3、清空浏览器缓存。您就可以正常使用发帖限制了,您可以自己去做一个测试。 4、如果发帖后超限制的提示出现乱码注意下编码格式,错误如下图:   关于论坛的防范恶意帖子的内容,你可以参考: 设置Discuz!X2.5 防灌水垃圾帖设置策略 phpbb技术文档翻译:phpbb权限设置论坛用户权限说明文档 纯Linux环境下高端免备案【香港独立IP地址】php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名  

本文地址:https://www.51php.com/phpbb/10576.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服