现在的位置: 首页 > 综合 > 正文

使用 Akismet 防止垃圾评论

2013年10月10日 ⁄ 综合 ⁄ 共 1908字 ⁄ 字号 评论关闭
<?

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;
}

?>

Akismet是一个优秀的防Spam垃圾留言的优秀插件,绝大多数wordpress blogger都在使用,有了akismet之后,基本上不用担心垃圾留言的烦恼了。然而,人无完人,插(件)无完插!Akismet也并非完美,最近, 我常在被Akismet评判为垃圾的留言中找到“好人”的留言,然而,有时时间长了就自动删除了,损失珍贵的友情和留言。

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

抱歉!评论已关闭.