Services_Akismet
PHP April 25th, 2008
メモ。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");
}
?>