116 lines
3.0 KiB
Markdown
116 lines
3.0 KiB
Markdown
# GeoIP for Laravel 5
|
|
|
|
[](https://packagist.org/packages/torann/geoip) [](https://packagist.org/packages/torann/geoip)
|
|
|
|
Determine the geographical location of website visitors based on their IP addresses. [Homepage](http://lyften.com/projects/laravel-geoip/)
|
|
|
|
----------
|
|
|
|
## Installation
|
|
|
|
- [GeoIP for Laravel 5 on Packagist](https://packagist.org/packages/torann/geoip)
|
|
- [GeoIP for Laravel 5 on GitHub](https://github.com/Torann/laravel-geoip)
|
|
- [Laravel 4 Installation](https://github.com/Torann/laravel-geoip/tree/0.1.1)
|
|
|
|
To get the latest version of GeoIP simply require it in your `composer.json` file.
|
|
|
|
~~~
|
|
"torann/geoip": "0.2.*@dev"
|
|
~~~
|
|
|
|
You'll then need to run `composer install` to download it and have the autoloader updated.
|
|
|
|
Once GeoIP is installed you need to register the service provider with the application. Open up `config/app.php` and find the `providers` key.
|
|
|
|
~~~php
|
|
'providers' => array(
|
|
|
|
'Torann\GeoIP\GeoIPServiceProvider',
|
|
|
|
)
|
|
~~~
|
|
|
|
GeoIP also ships with a facade which provides the static syntax for creating collections. You can register the facade in the `aliases` key of your `config/app.php` file.
|
|
|
|
~~~php
|
|
'aliases' => array(
|
|
|
|
'GeoIP' => 'Torann\GeoIP\GeoIPFacade',
|
|
|
|
)
|
|
~~~
|
|
|
|
### Publish the configurations
|
|
|
|
Run this on the command line from the root of your project:
|
|
|
|
~~~
|
|
$ php artisan vendor:publish
|
|
~~~
|
|
|
|
A configuration file will be publish to `config/geoip.php`
|
|
|
|
### Update max mind cities database
|
|
|
|
~~~
|
|
$ php artisan geoip:update
|
|
~~~
|
|
|
|
**Database Service**: To use the database version of [MaxMind](http://www.maxmind.com) services download the `GeoLite2-City.mmdb` from [http://dev.maxmind.com/geoip/geoip2/geolite2/](http://dev.maxmind.com/geoip/geoip2/geolite2/) and extract it to `storage/app/geoip.mmdb`. And that's it.
|
|
|
|
## Usage
|
|
|
|
Get the location data for a website visitor:
|
|
|
|
```php
|
|
$location = GeoIP::getLocation();
|
|
```
|
|
|
|
> When an IP is not given the `$_SERVER["REMOTE_ADDR"]` is used.
|
|
|
|
Getting the location data for a given IP:
|
|
|
|
```php
|
|
$location = GeoIP::getLocation('232.223.11.11');
|
|
```
|
|
|
|
### Example Data
|
|
|
|
```php
|
|
array (
|
|
"ip" => "232.223.11.11",
|
|
"isoCode" => "US",
|
|
"country" => "United States",
|
|
"city" => "New Haven",
|
|
"state" => "CT",
|
|
"postal_code" => "06510",
|
|
"lat" => 41.28,
|
|
"lon" => -72.88,
|
|
"timezone" => "America/New_York",
|
|
"continent" => "NA",
|
|
"default" => false
|
|
);
|
|
```
|
|
|
|
#### Default Location
|
|
|
|
In the case that a location is not found the fallback location will be returned with the `default` parameter set to `true`. To set your own default change it in the configurations `config/geoip.php`
|
|
|
|
## Change Log
|
|
|
|
#### v0.2.1
|
|
|
|
- Add database_path to config
|
|
- Add update_url to config
|
|
- Add GeoIP database update command "php artisan geoip:update"
|
|
- Add some test
|
|
- Format code
|
|
|
|
#### v0.2.0
|
|
|
|
- Update to Laravel 5
|
|
- Support IPv6
|
|
- Log address not found exceptions
|
|
- Supports a custom default location
|
|
|