ゼロと無限の間に

フリーでオープンソースなJavaScriptとかPHPとか。

ユーザ用ツール

サイト用ツール


php-tool-box:services-spam-champuru

スパムちゃんぷるーDNSBLをPHPから手軽に使う - Services_SpamChampuru

更新履歴とコメントはServices_SpamChampuru Archive - ゼロと無限の間のログでどうぞ。:-D


livedoorによるDNS Black List方式によるSPAMフィルターのAPI、スパムちゃんぷるーDNSBL
これを使うためのPerlモジュールは公開されているのに、PHP版が無い!ので作った。
けどすぐに「スパムちゃんぷるーDNSBL」をPHPから利用するServices_SpamChampuru_DNSBLが公開されていた。が、せっかくだから公開。


最初はPEAR::Net_DNSBLを使おうとしたけど、どうもうまくいかない。ソースを見たらややこしいことをしてそうなので面倒になってやめた。:-\

ここは1つシンプルにしてみよう。名前もServices_SpamSimpleuにしようかと思ったけど分かりづらいのでやめた。

材料

  • Services_SpamChampuru(下記ソースコードをコピーしてPHPファイルとして保存する)
  • SPAM少々(動作確認用に)

使い方の例

require_once('Services_SpamChampuru.php');
 
//アクセス元のIPアドレスをチェックする場合はパラメータ無しでOK
var_dump(Services_SpamChampuru::isSpam()); //=> false
 
//IPアドレスを指定してチェックする場合
var_dump(Services_SpamChampuru::isSpam('192.168.0.1')); //=> false
 
//常にSPAMと判定される、テスト用のIPアドレス
var_dump(Services_SpamChampuru::isSpam('192.0.2.1')); //=> true

ライセンス

例によってMITライセンスで。

ソースコード

シンプルでしょ?;-)

class Services_SpamChampuru {
    const BASE_DOMAIN = '.dnsbl.spam-champuru.livedoor.com';
 
    //SPAMの場合はDNSからこのIPアドレスが返される
    const RESULT_SPAM_IP = '127.0.0.2';
 
    /**
     *  スパムかどうか判定する
     *  @param  string  $ip 判定したいIPアドレス(v4)
     *  @return boolean 判定結果
     */
    public static function isSpam($ip = null) {
        if (!$ip) {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        $name = implode('.', array_reverse(explode('.', $ip))) . self::BASE_DOMAIN;
        return (getHostByName($name) == self::RESULT_SPAM_IP);
    }
}
php-tool-box/services-spam-champuru.txt · 最終更新: 2008/10/30 22:29 by dgbadmin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki