Coder Social home page Coder Social logo

adrianorsouza / laravel-geolocation Goto Github PK

View Code? Open in Web Editor NEW
51.0 2.0 11.0 36 KB

Laravel package to get the details about Region, City and Country for a given IP Address.

License: BSD 3-Clause "New" or "Revised" License

PHP 100.00%
ipinfo laravel geolocation geoip geoip2 ip iplookup iplookup-php

laravel-geolocation's Introduction

Laravel GeoLocation Package

Laravel package to get the details about Region, City and Country for a given IP Address.

This package is a wrapper for IpInfo Provider, however we have plan to implement a driver for MaxMind GeoIP2 databases.

Install

composer require adrianorosa/laravel-geolocation

This package supports the latest version of Laravel, for now 5.8+ was tested, but older versions should work fine.

As of Laravel 5.5 there is no need to add the ServiceProvider within the AppServiceProvider array. Laravel loads this provider using Package Discovery.

Usage

There is no need to additional setup to start using, once you install it via composer you can call the Facade:

<?php
use Adrianorosa\GeoLocation\GeoLocation;

$details = GeoLocation::lookup('8.8.8.8');

echo $details->getIp();
// 8.8.8.8

echo $details->getCity();
// Mountain View

echo $details->getRegion();
// California

echo $details->getCountry();
// United States

echo $details->getLatitude();
// 37.386

echo $details->getLongitude();
// -122.0838

var_dump($details->toArray());
// Array
// (
//  [city] => Mountain View
//  [region] => California
//  [country] => United States
//  [countryCode] => US
//  [latitude] => 37.386
//  [longitude] => -122.0838
//)

Console Command

To display details about an Ip or Your current network Ip Address you may use the artisan command:

php artisan geolocation:lookup --ip 8.8.8.8

+---------+---------------+------------+----------------+-------------+----------+-----------+
| ip      | city          | region     | country        | countryCode | latitude | longitude |
+---------+---------------+------------+----------------+-------------+----------+-----------+
| 8.8.8.8 | Mountain View | California | Estados Unidos | US          | 37.386   | -122.0838 |
+---------+---------------+------------+----------------+-------------+----------+-----------+

Override Configuration and translations

This package comes with a little configuration for IpInfo and translations for Country Names.

You can stick with default values, which works fine, or publish using the following commands:

Publish all config and translations

php artisan vendor:publish

Publish config

php artisan vendor:publish --tag=geolocation-config

Publish translations

php artisan vendor:publish --tag=geolocation-translations

Author

Adriano Rosa (https://adrianorosa.com)

Licence

Copyright © 2021, Adriano Rosa [email protected] All rights reserved.

For the full copyright and license information, please view the LICENSE file that was distributed within the source root of this project.

laravel-geolocation's People

Contributors

adrianorsouza avatar brekitomasson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

laravel-geolocation's Issues

Laravel 11.x support

When trying to install the package with a fresh 11.x laravel installation it shows the error bellow:

Problem 1
    - Root composer.json requires laravel/framework ^11.0, found laravel/framework[v11.0.0, ..., v11.15.0] but the package is fixed to v10.48.12 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
  Problem 2
    - Root composer.json requires nunomaduro/collision ^8.1, found nunomaduro/collision[v8.1.0, v8.1.1] but the package is fixed to v7.10.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require adrianorosa/laravel-geolocation:*" to figure out if any version is installable, or "composer require adrianorosa/laravel-geolocation:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Please provide support for laravel 11.x ASAP.

Laravel v9 Support?

Any plans on updating this to support Laravel v9? It's one of very few packages that are holding me back from updating my framework.

array_key_exists() in production

I just installed the geolocation package. When I run it locally, it runs fine, but when it's in production, geolocation suddenly becomes an error with the following text "array_key_exists(): Argument #2 ($array) must be of type array, string given ", what is the reason for this?

this is an example of my coding:

        $check_location = GeoLocation::lookup($_SERVER['REMOTE_ADDR']);
        $model = new Pengunjung();
        $model_check = Pengunjung::where('ip', $check_location->getIp())->whereDate('created_at', date('Y-m-d'))->first();
        if ($model_check == null) {
            $model->ip = $check_location->getIp();
            $model->city = $check_location->getCity();
            $model->region = $check_location->getRegion();
            $model->country = $check_location->getCountry();
            $model->latitude = $check_location->getLatitude();
            $model->longitude = $check_location->getLongitude();
            $model->save();
        }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.