PHPでIPアドレスから国名を割り出す

muramatsu 69views 更新:2016年12月21日

Net_GeoIPが無料で国名を割り出すことができるらしいのでそのやり方を軽くまとめます。
環境
Amaozn Linux

#pear というphpの拡張ができるコマンドやらを yum かなんかでインストールしてくる。
yum install pear 
#pearコマンド で Net_GeoIP とやらをインストールしてくる
pear install Net_GeoIP
#IPアドレスから国名を出すためのデータベースを引っ張ってくる
#以下のURLから GeoLite Country とやらの欄のBinary / gzip のダウンロードからwgetかなんかで引っ張ってこれると思います

http://dev.maxmind.com/geoip/legacy/geolite/

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
#解凍 gunzipコマンドがない場合は同様にyumかなんかで引っ張ってくるか同じようなコマンドを探せると思われます。
gunzip GeoIP.dat.gz 

あとは PHP のスクリプト内でまずNET_GEOIPモジュールファイルを読み込んでデーターベースで参照するだけだと思われます

<?php 
  $IP ="任意のIPアドレス"
  #モジュールファイル読み込み
  require_once("Net/GeoIP.php");
  #データベースまでのパスを絶対パスで指定してあげる
  $geoip = Net_GeoIP::getInstance("hogehoge/GeoIP.dat");
  #国名確認
  $COUNTRY = $geoip->lookupCountryName("$IP");
  echo "$COUNTRY";
?>

これで国名が取得できてると思います。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません