🌏

GeoLite2でIPアドレスから国名を求める

2023/08/17に公開

GeoLite2とは

GeoLite2を使えば、IPアドレスから国名・地域名を求めることができます。

GeoLite2のインストール

インストール方法は公式HPに説明されている通り行います。

  1. Sign Up for GeoLite2 からサインアップします。
  2. ログイン後のMyPageで、Download Databasesから「GeoLite2 City」と「GeoLite2 Country」のデータベースをDLします。
  3. ダウンロードしたデータベースを任意のパスに展開します。
  4. PHPのバージョン7.2以上が必要です。それとComposerも必要です。
  5. composerでgeoip2というパッケージをインストールします。
php composer.phar require geoip2/geoip2:~2.0

サンプルコード

(※このサンプルでは国名のほうを使います。)

sample.php
<?php
require 'vendor/autoload.php';
use GeoIp2\database\Reader;

const GEOLITE_PATH = '<任意のパス>/GeoLite2-Country.mmdb'; // DLしたファイルのパス

$ipAddress = 'x.x.x.x'; // 求めたいIPアドレス

$reader = new Reader(GEOLITE_PATH);
$country = $reader->country($ipAddress);
if ($country != NULL) {
  echo $country->country->names["ja"]; // 日本語での国名
  echo $country->country->isoCode; // ISO Code (日本だとjaとなる)
  echo var_dump($country->country); // 含まれる要素を全てdumpする
}

ライセンスには注意

公式HPにも記載がありますが、ライセンスはGeoLite2を使っていることを明記する必要があります。
こんな感じです。

This product includes GeoLite2 data created by MaxMind, available from
<a href="https://www.maxmind.com">https://www.maxmind.com</a>.

Discussion