Library ported to PHP 5.3 to use it in Symfony2 Projects
PHP C Other
Clone or download
Pull request Compare This branch is 69 commits ahead, 5 commits behind aferrandini:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
data Initial version of Maxmind GeoIp Library ported to PHP 5.3 May 22, 2012
docker/build/php5.6
src/Maxmind
test
.gitignore moved .php_cs.cache Jun 15, 2017
.travis.yml
Makefile
README.md
composer.json Fix license and unbound version constraints Feb 7, 2018
docker-compose.yml
phpunit.xml.dist

README.md

Maxmind GeoIp Library

Symfony bundle to easily use maxmind geoip bundle.

SensioLabsInsight Build

Installation

To install this library please follow the next steps:

First add the dependencie to your composer.json file:

"require": {
    ...
    "maxmind/geoip": "dev-master"
},

Then install the bundle with the command:

php composer update

Enable the bundle in your application kernel:

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Maxmind\Bundle\GeoipBundle\MaxmindGeoipBundle(),
    );
}

Now the library is installed.

To get the maxmind data source file (in '.dat' format), you can choose between one of the two following purposed methods:

You can go on the maxmind free download data page: http://dev.maxmind.com/geoip/geolite And get the needed version. Then you have to unzip the downloaded file in the data directory located in 'vendor/maxmind/geoip/data'.

Or you can simply execute this command:

php app/console maxmind:geoip:update-data %url-data-source%

Replace %url-data-source% with the url of the needed data source. ex: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

If you want to use your data file in another directory, you can configure it on app\config\config.yml

# app/config/config.yml
maxmind_geoip:
	data_file_path: "%kernel.root_dir%/../web/GeoIPCity.dat"

Now can use the Maxmind GeoIp Library everywhere in your Symfony2 application.

Usage

The following examples are available if you are in a controller

$geoip = $this->get('maxmind.geoip')->lookup(%IP_ADDR%);

$geoip->getCountryCode();
$geoip->getCountryCode3();
$geoip->getCountryName();
$geoip->getRegion();
$geoip->getCity();
$geoip->getPostalCode();
$geoip->getLatitude();
$geoip->getLongitude();
$geoip->getAreaCode();
$geoip->getMetroCode();
$geoip->getContinentCode();

Or in twig file

{{ ip|geoip.countryCode }}
{{ ip|geoip.countryCode3 }}
{{ ip|geoip.countryName }}
{{ ip|geoip.regionCode }}
{{ ip|geoip.region }}
{{ ip|geoip.city }}
{{ ip|geoip.postalCode }}
{{ ip|geoip.latitude }}
{{ ip|geoip.longitude }}
{{ ip|geoip.areaCode }}
{{ ip|geoip.metroCode }}
{{ ip|geoip.continentCode }}

You can add a demo route in your 'routing_dev' to get an example on how this bundle work for example:

_maxmind_geoip:
    resource: "@MaxmindGeoipBundle/Controller/DemoController.php"
    type:     annotation
    prefix:   /demo

Get a lookup at /demo/geoip

This library is an import of Maxmind GeoIp Free Library, you can find at http://www.maxmind.com/