Top > 気まぐれ日記 > 2008-09-27

[Web]spam対策 *

接続国取得に、hostip.infoを使用していましたが、日本の一部プロバイダが登録されていないようなので、自前で実装。

不正アクセスの発信地の国別統計をとろう!
http://www.nminoru.jp/~nminoru/memo/ip-address/what_country_from.html

から持ってきた情報を強引にファイル化し、引き当てるようにした。

<?php function get_ip2country($ip)
{
    $country = "XX";
    if (preg_match('/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/i', $ip, $matches)) {
        if ($fp = fopen( LIB_DIR . "ip2country.bin", 'r') ) {
            fseek($fp, ($matches[1] * 0x10000 + $matches[2] * 0x100 + $matches[3]) * 2);
            $country = fgets($fp, 2 + 1);
            fclose($fp);
        }
    }
    if ($country == "XX") {
        $rc = http_request("http://api.hostip.info/country.php?ip=" . $ip);
        if ($rc['rc'] == 200)
            $country = mb_convert_encoding($rc["data"], SOURCE_ENCODING, "UTF-8");
    }
    return $country;
} ?>

fileip2country.zip

 

 


添付ファイル: fileip2country.zip 169件 [詳細]