【问题标题】:Drupal module to control user post frequency?Drupal模块来控制用户发布频率?
【发布时间】:2010-11-09 06:45:38
【问题描述】:

本周我们在PortableApps.com 上遇到了一种新型垃圾邮件机器人,它以每分钟大约 10 cmets 的速度发帖,而且似乎没有停止 - 至少在前一个小时左右(我们'到目前为止,我总是在那个时间内停止它)。上周我们遇到了大约十几次 - 有时会停止在 50 或 60 次,有时会达到 250 或 300 次。我们正在努力尽可能地阻止它和其他垃圾邮件机器人,但目前它是仍然是一个真正的害虫。

我想知道同时是否有任何类型的模块来控制用户可以发布的频率,例如新用户每小时 50 个或每小时 10 个。这至少意味着我们不必在管理/内容/评论中一次清理 300 个 cmets 50 个,而是需要清理一个较小的数字。 (添加页面以删除用户的所有内容并阻止它们的模块也会很有帮助!)

我相信有一个可用于 WordPress 的插件,但无法为 Drupal 找到任何这样的东西。

【问题讨论】:

    标签: drupal drupal-6 drupal-modules spam-prevention


    【解决方案1】:

    对于第二个问题,我想看看User Delete module (click) 的代码。

    该模块还会禁用用户帐户并取消发布某个用户的所有节点/cmets。通过扩展代码,您可以轻松地创建另一种可能性来取消发布 + 删除某个用户的所有节点/cmets 并阻止该帐户。

    在模块中取消发布代码之后,您应该只添加删除代码(如果模块是通过 sql 查询或使用 drupal 删除函数进行选择,则在 sql 中)。


    另一种选择是让一个视图(使用视图模块)只供管理员查看,您可以在其中使用过滤器选择某个用户,然后列出他/她的帖子。然后在 node-contenttype.tpl.php 中放置一个按钮,该按钮调用一个删除所有节点/cmets 和用户的函数。


    第一个问题(发布频率

    我一直在考虑评论帖子的限制。如果我没记错的话,Drupal 将 cmets 存储在一个单独的表中并具有特定于注释的功能。

    我将创建一个新模块并使用comment_nodeapi function 我将在“插入”操作中检查当前用户在特定时间范围内已经完成了多少 cmets。

    为了检查这一点,我将在数据库上编写一个自定义 sql 查询,该查询获取由 uid 生成的 alle cmets 的计数,其中 post_date 大于 NOW-1hour。如果该计数大于 10 或 15 或您想要的任何发布频率,那么您可以提供 a message back to the user。您可以使用全局 $user 变量检索用户 ID 和名称。

    (例如:print $user->name;

    您必须自己检查 sql 查询,但是当您有金额时,这里有一些代码:

    <?php
    function comment_nodeapi(&$node, $op, $arg = 0) {
      switch ($op) {
    
        case 'insert':
          //PLACE HERE THE SQL TO GET THE COUNT
          if($count > 15){
              $repeat = FALSE;
              $type = 'status'
              drupal_set_message("You have reached the comment limit for this time.", $type, $repeat);
              break;
          }else{
              db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->changed, $node->uid);
              break;
          }
       }
    }
    ?>
    

    (此代码尚未经过测试,因此无法保证,但这应该会让您走上正轨)

    【讨论】:

    • 看起来它应该做我们想要帮助清理的事情;谢谢!我会看看我们是否尝试一下。
    【解决方案2】:

    我建议像Mollom(来自 Drupal 的创建者)之类的东西。它会扫描消息中已知的垃圾邮件模式/关键字/...如果扫描失败,它会向用户显示一个验证码,以确保它是一个想要输入与垃圾邮件具有相同属性的内容的真人。

    他们提供free service 和一些付费解决方案。我们正在为一些客户使用它,它物有所值。它还可以很好地集成到 Drupal 中。

    【讨论】:

    • 我们尝试了 Mollom,但不幸的是,与我在其他一些(较小的)网站上部署它的经验不同,它没有成功 - 几个已知的好用户显然因为他们的IP 地址,并且没有办法用 Mollom 解决它 - 没有白名单等。我们与他们讨论过,但得出的结论是,它目前无法正常工作。
    • 哦,可惜了。到目前为止,我们从未遇到任何问题。这很糟糕,因为 Mollom 是 IMO 一项非常整洁的服务。
    • 我们也在一个巨大的网站上使用了 Mollom - 它完全被淘汰了;它让垃圾邮件发送者通过,并惩罚合法用户。
    【解决方案3】:

    Comment Limit 可能是你需要的。

    【讨论】:

    • 这看起来只包括对一个节点的评论,不幸的是,不包括任何这样那样类型的节点。我们从未有任何垃圾邮件机器人在每个节点上发布超过几个 cmets,因此它对我们不起作用。无论如何感谢您的帮助。
    【解决方案4】:

    http://drupal.org/project/spam http://drupal.org/project/antispam - 有 akismet 支持

    【讨论】:

    • 我相信我们已经有了垃圾邮件模块,而且我认为我们认为我们的数量对于反垃圾邮件来说太高了。我们都看过了,抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多