php-使用akismet注册垃圾邮件发送者
作者:互联网
我有大量通过网站注册的用户,但在注册过程中未激活任何垃圾邮件过滤器.
我想区分哪些注册用户可能是垃圾邮件发送者.我正在尝试使用akismet来做到这一点,但到目前为止akismet告诉我所有用户都不是垃圾邮件发送者.可能是因为akismet确实是用于评论的,在注册过程中不可用.
我要发送的是用户名,电子邮件.
对于url,我使用电子邮件域.
对于他们的评论,我使用:“嗨,我是$date上以电子邮件$email和网站$url注册的$domain中的$username”.
但是,就像所说的那样,即使用户看起来像垃圾邮件发送者,也总是返回有效用户.
如果您对完整代码感兴趣:
<?php
// bring php process to this dir
chdir(dirname(__FILE__));
// include Joomla Framework
require('../bootstrap-joomla.php');
// akismet class
require('akismet.class.php');
/**
* Retrieves users not yet validated
*/
function getUsers($userid, $limit = 10) {
global $database;
$database->setQuery("SELECT * FROM jos_users WHERE akismet_validated = 0 LIMIT " . intval($limit));
$Users = $database->loadObjectList();
return $Users;
}
/**
* sets the validation results for the user
*/
function saveValidationResult($userid, $spammer) {
global $database;
$database->setQuery("UPDATE jos_users set akismet_validated = 1, akismet_spammer = " . intval($spammer) . " WHERE id = " . $userid . " LIMIT 1");
return $database->query();
}
// get non validated users
$Users = getUsers();
// validate each user
foreach($Users as $User) {
list($user, $domain) = explode('@', $User->email);
$name = $User->username;
$email = $User->email;
$url = $domain;
$comment = "Hello, I am $name, registered on $User->registerDate from <a href=\"$url\">$url</a>.\r\n";
$akismet = new Akismet('http://www.fijiwebdesign.com/', 'c511157d1d98');
$akismet->setCommentAuthor($name);
$akismet->setCommentAuthorEmail($email);
$akismet->setCommentAuthorURL($url);
$akismet->setCommentContent($comment);
//$akismet->setPermalink('http://www.fijiwebddesign.com/');
echo "$User->id, $User->username : ";
if($akismet->isCommentSpam()) {
saveValidationResult($User->id, true);
echo "Spammer";
} else {
saveValidationResult($User->id, false);
echo "Not Spammer";
}
echo "\r\n";
}
解决方法:
最好将Akismet视为具有其他启发式功能的巨型Bayesian spam filter.它可以处理帖子的内容,帖子的时间安排,最重要的是,可以多久看到一次类似的内容被举报为垃圾内容.您要输入的字符串有些独特,因此其他人将不会受垃圾邮件的影响.即使您确实以某种方式将该字符串标记为垃圾邮件,您也最终会收到大量误报,因为您只是通过它提供了所有用户帐户.
如果您认为自己的网站上可能有非法用户,而他们还没有参加,则只需删除注册即可.如果它们合法,则只需重新注册即可.
如果用户正在参与,只需查看他们的贡献即可.他们的垃圾邮件应该很明显.
标签:spam-prevention,joomla,php 来源: https://codeday.me/bug/20191102/1994137.html