ちょっと前から、いじっているサイト YouTube NAVI は、内容がワールドワイドなコンテンツなので、Amazon のアソシエイツも各国のそれに参加しています。
当初は、ブラウザが送ってくる Accept-Charset を見て判別して振り分けていたのですが、Accept-Charset はあくまでも言語指定であって、住んでる地域とは一致しないので、IPを元にアクセス元の国を判別してみようと思い立ちました。
調べてみると、http://api.hostip.info/ で、APIとして公開されていたので使ってみたのですが、正しく取得できない場合があったので、自前で構築してみました。
まずは、リストの取得ですが 不正アクセスの発信地の国別統計をとろう! で Nakamura Minoru さんという方が、世界に4ヶ所ある IP アドレスを管理している組織が公開しているデータをまとめて公開されているのを発見!
そちらのデーターを元に MySQL にデータベースを作成し、PHPスクリプトで問い合わせをする関数を作ってみました。
function ip2tld($ip)
{
global $config;
if (preg_match("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/",$ip,$arg))
{
$ip = $arg[1];
}
else
{
$ip = "";
}
$tld = "";
if ($ip)
{
$ips = explode(".",$ip);
$ip = $ips[0] * 16777216 + $ips[1] * 65536 + $ips[2] * 256 + $ips[3];
// データベースに接続し、選択する
$link = mysql_connect($config['db']['host'], $config['db']['user'], $config['db']['pass'])
or die("Could not connect");
//print "Connected successfully";
mysql_select_db($config['db']['name'],$link)
or die("Could not select database");
// SQLクエリを実行する
$query = "SELECT tld FROM `{$config['ip2tld']['table']}` WHERE start <= $ip AND end >= $ip LIMIT 1";
//echo $query;
$result = mysql_query($query)
or die("Query failed");
// HTMLに結果を出力する
list($tld) = mysql_fetch_row($result);
// 接続を閉じる
mysql_close($link);
}
if (!$tld) $tld = "XX";
return $tld;
}
$config = array(); // DB setting // $config['db']['host'] = "localhost"; // MySQL Server host $config['db']['name'] = "db name"; // MySQL DB name $config['db']['user'] = "user name"; // MySQL User name $config['db']['pass'] = "password"; // MySQL Password // ---------- // $config['ip2tld']['table'] = "ip2tld_dat"; // DB Table name (ip2tld_dat)
これを利用したのが Convert IP to ccTLD です。
API として利用するなら http://hypweb.net/api/ip2tld/?ip= として IPを与えてください。
現状では利用にあたり制限をしていませんが、継続性は保証できません。ある日突然なくなるかもしれないので、ご了承ください。
一式諸々をパックしておきました。ご自由にお使いください。
| Page name: | 徒然日記/2006-07-28 [ Sended pings(9) ] | |
| Author: | nao-pon | - 2006/07/28 01:32:42 JST(763d) |
| Last edit: | nao-pon | - 2006/07/28 01:32:42 JST(763d) |
| Editers: | nao-pon | |
| Back Link: | nao-pon(143d) nao-pon(1057d) PHP(1058d) 徒然日記(1469d) AmazonShop(1699d) | |
ログイン
アクティブメニュー
"ぽちっ"としてね☆
最新のページ
ブックマーク
新着トラックバック
サイト内 Wiki
☆ 検索 ☆
オンライン状況
サイト情報
現在ページのQRコード
参照元情報