『こぶたのラッパ』はサイトを移動しました!
今後はこちらをどうぞ
2007年 12月 30日
IPCountry -PHP+MySQLでIPアドレス→国情報取得
年末に何やってるんだと言われそうですが、せっかく作ったので公開しておきます。

IPCountry(phpソース+MySQL用のddl+sql)


要するに、「58.138.21.212」のようなIPアドレスから、該当する国情報を取得するphpクラスです。

■使い方 ~データベース更新~
----
<?php
require_once('ipcountry.php');

// コネクションを取得(適宜実装してね)
$conn = ...

$result = IPCountry::updatedb($conn);
?>
update: <?= $result ?>
----

■使い方 ~参照~
----
<?php
require_once('ipcountry.php');

// コネクションを取得(適宜実装してね)
$conn = ...

$ip = '58.138.21.212';
$country = IPCountry::ip2country($conn, $ip);
var_dump($country);

// 次のように表示される。
//
// object(stdClass)(5) {
// ["cc"]=>
// string(2) "JP"
// ["area"]=>
// string(9) "East Asia"
// ["name"]=>
// string(5) "Japan"
// ["name_ja"]=>
// string(6) "日本"
// ["area_ja"]=>
// string(12) "東アジア"
// }
?>
----


IPCountry::updatedbメソッドでは全部で5つの地域NIC(afrinic、apnic、arin、lacnic、ripencc)からIPアドレスの割り当て一覧を取得して、ipcountry_listテーブルへ登録します。

■地域NIC一覧(2007年12月現在)
----
・afrinic: ftp://ftp.arin.net/pub/stats/afrinic/delegated-afrinic-latest
・lacnic: ftp://ftp.arin.net/pub/stats/lacnic/delegated-lacnic-latest
・apnic: ftp://ftp.apnic.net/public/apnic/stats/apnic/delegated-apnic-latest
・ripencc: ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest
・arin: ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
----

IPCountry::ip2countryメソッドではipcountry_listテーブルとipcountry_ccテーブルから、指定されたIPアドレスの国情報(cc=国コード、area=地域、area_jp=日本語の地域、name=国名、name_ja=日本語の国名)を取得してオブジェクトで返します。

アクセス解析くらいでしか使わないと思いますが、まあイチから作る羽目になった人は参考にでもしてください。
そのまま使うなり改変するなりしていただいてもかまいませんので、お好きにどうぞー。
[PR]
by smilkobuta | 2007-12-30 13:14 | コンピュータ

<< 妹のHDDの故障が直らないのは... 小さな木のオモチャ >>