T

Services_Akismet

メモ。AkismetのコメントSPAM判定を利用する場合。

<?php
//例えばこんなSPAM
$author  = "有名なスパム野郎";
$mail    = "nasty-spam@spamspamspam.com";
$url     = "http://every-spammer.com/";
$comment = "ジンバブエで妻がアリクイにバイアグラを激安で"
         . "並行輸入したので貴方の銀行口座を教えておじいさん。";
//ここから下は$_SERVERから自動で取得されるけど指定することもできる
$referer = "http://another-spammer.com/";
$agent   = "Hell Bot 2.0";
$ip      = "123.456.789.0";

//設定
require_once 'Services/Akismet.php';
require_once 'Services/Akismet/Comment.php';
$key = trim(file_get_contents('akismet_key'));
$my_url = "http://selfkleptomaniac.org/";

$comment = new Services_Akismet_Comment();
$comment->setAuthor($author); 
$comment->setAuthorEmail($mail);
$comment->setAuthorUri($url);
$comment->setContent($comment); 
$comment->setUserIp($ip); 
$comment->setUserAgent($agent);
$comment->setHttpReferer($referer);
      
try{
        $akismet =& new Services_Akismet($my_url, $key);
        if($akismet->isSpam($comment)){ 
                print("やっぱりスパムでした。\n"); 
        }else{
                print("疑わしきは罰せず、ともいいますよ。\n");
        } 
}catch(Services_Akismet_InvalidApiKeyException $key){
        print("APIキーが間違ってます。\n");
}catch(Services_Akismet_CommunicationException $com){
        print("Akismetサーバとの通信に失敗しました。\n");
}catch(Services_Akismet_InvalidCommentException $commentEx){
        print("送信されたコメントのフォーマットに不備があります。\n");
        print($commentEx->getMessage() . "\n");
}
?>

Posted by on 4月 25, 2008 in PHP

コメントを残す