[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;
} ?>
ip2country.zip