2017 © Pedro Peláez
 

laravel laravel-geoip2

Service provider and DB downloader for Maxminds PHP API GeoIP2.

image

danielme85/laravel-geoip2

Service provider and DB downloader for Maxminds PHP API GeoIP2.

  • Thursday, November 16, 2017
  • by danielme85
  • Repository
  • 2 Watchers
  • 1 Stars
  • 124 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 18 % Grown

The README.md

laravel-geoip2

Laravel 5+ Service provider and DB downloader for Maxminds PHP API GeoIP2. https://github.com/maxmind/GeoIP2-php, (*1)

License: MIT Build Status, (*2)

Per Jan 2020 you now have to create an account at MaxMind and get a "license key". It is still free of charge per now., (*3)

https://dev.maxmind.com/geoip/geoip2/geolite2/, (*4)

Install

In composer.json "require": { "danielme85/laravel-geoip2": "dev-master", .... } or command: composer require danielme85/laravel-geoip2, (*5)

Add your geoip licence to your env file: GEOIP2_LICENSE=XXXXX, (*6)

Laravel 5.x

Add to your config/app.php under Service Providers
(If you use Laravel 5.5+ you could skip this step as Autodiscovery has been enabled for this package.), (*7)

``` //Service Providers danielme85\Geoip2\Geoip2ServiceProvider::class, //Facades 'Reader' => danielme85\Geoip2\Facade\Reader::class,, (*8)

```, (*9)

Lumen 5.x

Add to your boostrap/app.php file $app->register(danielme85\Geoip2\Geoip2ServiceProvider::class); ... $app->configure('app'); ... class_alias('danielme85\Geoip2\Facade\Reader, 'Reader'); $app->withFacades();, (*10)

Config

Publish the config file to your Laravel projects php artisan vendor:publish --provider="danielme85\Geoip2\Geoip2ServiceProvider" The following default settings will work right away: return [ 'geoip2' => [ 'downloadUrl' => 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz', //url db file download 'tempFile' => 'app/GeoLite2-City.mmdb.gz', //temp download file name 'dbName' => 'app/GeoLite2-City.mmdb', //Geoip DB filename 'localhost' => '8.8.8.8' //when running on localhost (or for general testing) you can specify a fake ip address here. ] ];, (*11)

Usage

You need to download the Maxmind Geoip first, the default config is for the city version (about 30MB download, 50MB extracted). php artisan geoip:download With the DB file downloaded you are ready to get some location data: use danielme85\Geoip2\Facade\Reader; ... $reader = Reader::connect(); $result = $reader->city($ip); Usage once you have the Reader:connect object is the same as maxminds documentation https://github.com/maxmind/GeoIP2-php., (*12)

Example usage, return json location data based on ipv4 address. ```php <?php use danielme85\Geoip2\Facade\Reader; ..., (*13)

function getLocation(Request $request) { $reader = Reader::connect(); /* I was experiencing inaccurate results... until I remembered that my web server traffic was routed trough CloudFlare :p In that case CloudFlare provides the original client ip in the following header information. */
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $ip = $_SERVER["HTTP_CF_CONNECTING_IP"]; } else { $ip = $request->ip(); } //the city() function from the GeoIp2 Php API will throw an exception if the ip-address is not found in the DB. try { $geodata = $reader->city($ip)->jsonSerialize(); //jsonSerialize seems to actually return an associative array. } catch (\Exception $e) { Log::warning($e->getMessage()); return response()->json("Geo-location not found!", 500); }, (*14)

return response()->json($geodata);

} ```, (*15)

This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com, (*16)

The Versions

16/11 2017

dev-master

9999999-dev

Service provider and DB downloader for Maxminds PHP API GeoIP2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Daniel Mellum