php中使用Akismet防止垃圾评论的代码

  然而,人无完人,插(件)无完插!Akismet也并非完美,最近, 我常在被Akismet评判为垃圾的留言中找到“好人”的留言,然而,有时时间长了就自动删除了,损失珍贵的友情和留言。

  别忘了修改代码中的 __YOUR_AKISMET_KEY__, __YOUR_WEBSITE_URL__ and __YOUR_NAME__

  http://www.script-tutorials.com/akismet-spam-protection/

  index.php

  

复制代码 代码如下:

  <?

  require_once ('classes/Akismet.class.php');

  class MySpamProtection {

  // variables

  var $sMyAkismetKey;

  var $sWebsiteUrl;

  var $sAuthName;

  var $sAuthEml;

  var $sAuthUrl;

  var $oAkismet;

  // constructor

  public function MySpamProtection() {

  // set necessary values for variables

  $this->sMyAkismetKey = '__YOUR_AKISMET_KEY__';

  $this->sWebsiteUrl = '__YOUR_WEBSITE_URL__';

  $this->sAuthName = '__YOUR_NAME__';

  $this->sAuthEml = '';

  $this->sAuthUrl = '';

  // Akismet initialization

  $this->oAkismet = new Akismet($this->sWebsiteUrl ,$this->sMyAkismetKey);

  $this->oAkismet->setCommentAuthor($this->sAuthName);

  $this->oAkismet->setCommentAuthorEmail($this->sAuthEml);

  $this->oAkismet->setCommentAuthorURL($this->sAuthUrl);

  }

  public function isSpam($s) {

  if (! $this->oAkismet) return false;

  $this->oAkismet->setCommentContent($s);

  return $this->oAkismet->isCommentSpam();

  }

  }

  echo <<<EOF

  <style type="text/css">

  form div {

  margin:10px;

  }

  form label {

  width:90px;

  float:left;

  display:block;

  }

  </style>

  <form action="" method="post">

  <div><label for="author">Author</label><input id="author" name="author" type="text" value="" /></div>

  <div><label for="comment">Comment</label><textarea id="comment" name="comment" cols="20" rows="4"></textarea></div>

  <div><input name="submit" type="submit" value="Send" /></div>

  </form>

  EOF;

  if ($_POST) {

  // draw debug information

  echo '<pre>';

  print_r($_POST);

  echo '</pre>';

  // obtain sent info

  $sPostAuthor = $_POST['author'];

  $sCommentComment = $_POST['comment'];

  // check for spam

  $oMySpamProtection = new MySpamProtection();

  $sAuthorCheck = ($oMySpamProtection->isSpam($sPostAuthor)) ? ' "Author" marked as Spam' : '"Author" not marked as Spam';

  $sCommentCheck = ($oMySpamProtection->isSpam($sCommentComment)) ? ' "Comment" marked as Spam' : '"Comment" not marked as Spam';

  echo $sAuthorCheck . '<br />' . $sCommentCheck;

  }

  ?>

  source.zip