LaravelでIPアドレスからユーザーの位置情報を取得する
LaravelでIPアドレスからユーザーの位置情報を取得するのに便利なライブラリ”Laravel Geoip“の使用方法を紹介します。
目次
インストール
composerを用いてtorann/geoipをインストールします。
$ composer require torann/geoip
config/app.php
にサービスプロバイダーとファザードを追加します。
'providers' => [
...
\Torann\GeoIP\GeoIPServiceProvider::class,
]
...
'aliases' => [
...
'GeoIP' => \Torann\GeoIP\Facades\GeoIP::class,
];
artisanコマンドより、コンフィグファイルを生成します。
$ php artisan vendor:publish --provider="Torann\GeoIP\GeoIPServiceProvider" --tag=config
キャッシュ設定
キャッシュの設定は三種類から選べます。
all
すべての場所がキャッシュされますsome
要求しているユーザーのみをキャッシュしますnone
キャッシュは完全に無効になります
// config/geoip.php
'cache' => 'all',
Usage
位置情報の取得
位置情報の取得は、geoip
関数を使用します
geoip($ip = null);
戻り値
\Torann\GeoIP\Location {
#attributes:array [
'ip' => '232.223.11.11',
'iso_code' => 'US',
'country' => 'United States',
'city' => 'New Haven',
'state' => 'CT',
'state_name' => 'Connecticut',
'postal_code' => '06510',
'lat' => 41.28,
'lon' => -72.88,
'timezone' => 'America/New_York',
'continent' => 'NA',
'currency' => 'USD',
'default' => false,
]
}
ユーザーのIPアドレスの取得
getClientIP
メソッドよりユーザーのIPアドレスの取得できます。
geoip()->getClientIP($ip)
サービスデータの更新
一部のサービスでは、ローカルファイルを更新する必要がある場合があります。たとえば、MaxMindデータベースサービスはリモートデータベースをフェッチし、それをローカルファイルシステムに保存します。
$ php artisan geoip:update
キャッシュクリア
一部のキャッシュドライバは、保存されている場所をクリアする機能を提供します。(キャッシュのクリアにはキャッシュタグが必要なため、file
またはdatabase
キャッシュドライバーを使用する場合はサポートされません。)
$ php artisan geoip:clear
This cache store does not support tagging
Laravel8等で”This cache store does not support tagging”とエラーが表示された場合、cache_tags
を無効化することで、エラーを回避することができます。
// config/geoip.php
'cache_tags' => []、