У меня большой список пользователей, которые зарегистрировались через веб-сайт без какого-либо активного спам-фильтра во время регистрации.
Я хотел бы выделить, какие зарегистрированные пользователи, скорее всего, являются спамерами. Я пытаюсь использовать akismet для этого, но пока akismet говорит мне, что все пользователи не спаммеры. Вероятно, так как akismet действительно сделан для комментариев, которые недоступны при регистрации.
То, что я посылаю akismet, - это имя пользователя, адрес электронной почты.
Для URL я использую домен электронной почты.
Для их комментариев я использую: «Привет, я $ username из $ domain, зарегистрированного на $ date с электронной почтой $ email и веб-сайтом $ url».
Однако, как уже говорилось, всегда возвращает действительных пользователей, даже если пользователь выглядит как спамер.
Если вас интересует полный код:
<?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";
}