本周我们在PortableApps.com发布了一种新型的垃圾邮件机器人,每分钟发布一次约10条评论,并且似乎没有停止 - 至少在第一个小时左右(到目前为止,我们总是在那段时间内停止它。我们在上周已经有十几次了 - 有时会停在50或60,有时会达到250或300.我们正努力尽可能地阻止它和其他垃圾邮件机器人,但目前它是仍然是一种真正的害虫。
我想知道在同一时间是否有任何类型的模块来控制用户可以发布的频率,例如对于新用户,每小时50个小时或类似10个小时。这至少意味着我们不需要在管理员/内容/评论中一次清理300条评论50,而是要清除更少的数字。 (添加页面以删除用户的所有内容并阻止它们的模块也会有所帮助!)
我相信有一个插件可以用于WordPress,但是找不到任何针对Drupal的东西。
答案 0 :(得分:1)
关于你的第二个问题,我会看一下User Delete module (click)的代码。
该模块还会禁用某个用户的用户帐户和未发布的所有节点/注释。通过扩展代码,您可以轻松创建另一种可能性来取消发布+删除某个用户的所有节点/评论并阻止该帐户。
在模块中取消发布代码后,你应该只删除代码(如果模块是通过sql-query或使用drupal delete函数选择的,则在sql中)。
另一个选择是如此做一个视图(使用视图模块)只能由管理员进行查看,在那里你选择使用过滤特定用户,然后列出了他/她的职位。然后在node-contenttype.tpl.php中放置一个按钮,该按钮调用一个删除所有节点/注释和用户的函数。
第一个问题(发布频率)
我一直在考虑评论发布限制。如果我没记错的话,Drupal会将评论存储在一个单独的表中,并具有注释特定的功能。
我创建了一个新模块并使用comment_nodeapi function我会检查操作'insert'当前用户在特定时间范围内已经做了多少评论。
要检查这一点,我会在数据库上编写一个自定义的sql查询,该查询将获取uid所做的alle注释计数,其中post_date大于NOW-1hour。如果该数量大于10或15或您想要的任何频率,那么您可以a message back to the user。您可以使用global $ user变量检索用户标识和名称。
(例如: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;
}
}
}
?>
(此代码尚未经过测试,因此无法保证,但这应该会让您走上正轨)
答案 1 :(得分:1)
我会建议Mollom之类的东西(来自Drupal的创建者)。它会扫描邮件中的已知垃圾邮件模式/关键字/ ...如果此扫描失败,它会向用户显示一个验证码,以确保它是一个真人,想要输入与垃圾邮件具有相同属性的内容。
他们提供free service和一些付费解决方案。我们正在为一些客户使用它,这是值得的。它也很好地集成在Drupal中。
答案 2 :(得分:1)
Comment Limit可能就是你所需要的。
答案 3 :(得分:0)
http://drupal.org/project/spam http://drupal.org/project/antispam - 支持akismet