IPアドレスから所在地を調べたいと思ったことはありませんか?今回は,IPアドレスからその場所がどこなのかPHPで調べる方法をご紹介します。
それには,GeoIPライブラリが必要になります。PHPからこのライブラリの機能を使うには,
- PEARのNet_GeoIPをインストール
- Peclの拡張モジュールをインストール
- Apacheのモジュールとしてインストール
という3種類の方法があります。
今回はPeclの拡張モジュールを使います。対象はLinux系OSになります。
1.GeoIPライブラリををインストール
MaxMind社のホームページから,GeoIPライブラリをダウンロードし,インストールします。
2.GeoIPで使うデータを入手
無料で利用できる国データ,町データをダウンロード,解凍し,配置します。(有料版もあります。)
3.Peclモジュールのインストール,設定
を実行します。
この時表示されるgeoip.soの場所を確認して下さい。
php.iniに
extension="php/extensions/no-debug-non-zts-20060613/geoip.so"
というようにgeoip.soのパスを追加し,apacheを再起動します。
4.確認
phpinfoを確認して,geoipの項目が表示されていれば成功です。うまくいかなかった時は,データファイルの場所,php.iniのgeoip.soの指定が間違っている可能性があります。
GeoIP関数には何種類かあります(詳細はPHPマニュアルのGeoIP関数を見て下さい)が,一番使えそうなのがgeoip_record_by_name関数です。
引数にホスト名やIPアドレスを指定すると,国,地域,都市名,緯度,経度などの情報を入手できます。
<?php
//ホワイトハウス
var_dump(geoip_record_by_name('whitehouse.gov'));
//東京タワー
var_dump(geoip_record_by_name('www.tokyotower.co.jp'));
//訪問者がどこから来たか
var_dump(geoip_record_by_name($_SERVER['REMOTE_ADDR']));
?>
国しかわからなかったりということもありますが,興味がある人はぜひ使ってみて下さい。
(アシアル 牧野克俊)
この記事は,アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは,他にもPHP最新ニュースや,困ったときのQ&A掲示板,初心者向けのPHP講座など,PHP開発者をサポートする情報を掲載しています。