Returns geo data based on IP - uses Maxmind databases (free/commercial)

Installs: 3 127

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 3

Forks: 2

Open Issues: 0


1.0.1 2020-03-22 00:19 UTC

This package is auto-updated.

Last update: 2024-06-06 19:55:54 UTC


What does it do?

This extension provides scheduler job to download maxmind database (free or commercial) and some small class with methods to get interesting content like country, continent etc.

How to install?

  1. Install using composer:

    composer require sourcebroker/ip2geo
  2. Go to Scheduler module and add new job "Download geolocation database"

  3. While adding scheduler job you need two parameters:

    1. Database name. This can an be any string. Example: "freeCountry", "commercialCountry". This name will be used later in php code like GeoIp::getInstance('freeCountry') .
    2. Download URL. Maxmind database download link.
  4. Run the scheduler and check folder /uploads/tx_ip2geo/. The database should be downloaded there.

How to use?

In your code get the data with following call:

  1. For country database:

    $countryCode = GeoIp::getInstance('freeCountry')->getCountryCode(); // assuming you named database with "freeCountry" in scheduler task

    For IP you will get "DE" as response:

  2. For city database:

    $locationData = GeoIp::getInstance('freeCity')->getLocation(); // assuming you named database with "freeCity" in scheduler task

    For IP you will get following data as response:

       [continentCode] => EU
       [countryCode] => DE
       [countryName] => Germany
       [city] => Berlin
       [postalCode] => 10178
       [latitude] => 52.5196
       [longitude] => 13.4069

Additional options

You can set some options for this extension in $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ip2geo']. You can use typo3conf/LocalConfiguration file to store this values.

  1. defaultLocalIP For local development you IP is usually and this IP of course does not exist in Maxmind database. For this situation Maxminf API will return "The address is not in the database.". You can fix it by setting default IP if the IP is detected as Example configuration:

    'EXTCONF' => [
      'ip2geo' => [
        'defaultLocalIP' => '',
  2. fakeIpHeaderName This is a name of header which you can use to overwrite the value of IP. This value must be unique so nobody except you can overwrite IP. TIP: a nice chrome extension for setting headers is "ModHeader". Example:

    'EXTCONF' => [
      'ip2geo' => [
        'fakeIpHeaderName' => 'myFakeIpHeader1991718263162831',

fakeIpHeaderName has precedence over defaultLocalIP when both are set.