Middleware to geolocate the client using the ip address

v3.0.0 2020-12-04 00:07 UTC

This package is auto-updated.

Last update: 2024-04-29 04:46:27 UTC


Latest Version on Packagist Software License Testing Total Downloads ![SensioLabs Insight][ico-sensiolabs]

Middleware to geolocate the client using the ip address and Geocoder and save the result as a request attribute.



This package is installable and autoloadable via Composer as middlewares/geolocation.

composer require middlewares/geolocation


$freeGeoIpProvider = new Geocoder\Provider\FreeGeoIp($adapter);

$dispatcher = new Dispatcher([
    new Middlewares\Geolocation($freeGeoIpProvider),

    function ($request) {
        //Get the client location
        $location = $request->getAttribute('client-location');

        $country = $location->first()->getCountry();

$response = $dispatcher->dispatch(new ServerRequest());


__construct(Geocoder\Provider\Provider $provider)

The geocoder provider used to geolocate the client.

It's also recommended to configure it to caching responses.

ipAttribute(string $ipAttribute)

By default uses the REMOTE_ADDR server parameter to get the client ip. This option allows to use a request attribute. Useful to combine with a ip detection middleware, for example client-ip.

attribute(string $attribute)

The attribute name used to store the client addresses in the server request. By default is client-location.

Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.

The MIT License (MIT). Please see LICENSE for more information.