编程语言
首页 > 编程语言> > php-使用akismet注册垃圾邮件发送者

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